From 964b614ff37de331714d060c1b80ef9545b92910 Mon Sep 17 00:00:00 2001 From: Tajim Date: Tue, 8 Sep 2026 22:35:01 +0600 Subject: [PATCH] fix(subject): remove unique validation rule on subject name --- .../Requests/Subject/StoreSubjectRequest.php | 2 +- .../Requests/Subject/UpdateSubjectRequest.php | 2 +- tests/Feature/SubjectManagementTest.php | 32 +++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/Http/Requests/Subject/StoreSubjectRequest.php b/app/Http/Requests/Subject/StoreSubjectRequest.php index 7975107d..44f3e9b1 100644 --- a/app/Http/Requests/Subject/StoreSubjectRequest.php +++ b/app/Http/Requests/Subject/StoreSubjectRequest.php @@ -35,7 +35,7 @@ protected function prepareForValidation(): void public function rules(): array { return [ - 'name' => ['required', 'string', 'max:100', 'min:3', 'unique:subjects,name'], + 'name' => ['required', 'string', 'max:100', 'min:3'], 'english_name' => ['nullable', 'string', 'max:100'], 'slug' => ['required', 'string', 'max:100', 'unique:subjects,slug'], 'tailwind_format' => ['required', 'string', 'max:100'], diff --git a/app/Http/Requests/Subject/UpdateSubjectRequest.php b/app/Http/Requests/Subject/UpdateSubjectRequest.php index 7b0a0709..eb8b0e5c 100644 --- a/app/Http/Requests/Subject/UpdateSubjectRequest.php +++ b/app/Http/Requests/Subject/UpdateSubjectRequest.php @@ -36,7 +36,7 @@ public function rules(): array $subject = $this->route('subject'); return [ - 'name' => ['sometimes', 'string', 'max:100', 'min:3', Rule::unique('subjects', 'name')->ignore($subject->id)], + 'name' => ['sometimes', 'string', 'max:100', 'min:3'], 'english_name' => ['nullable', 'string', 'max:100'], 'tailwind_format' => ['sometimes', 'string', 'max:100'], 'icon' => ['sometimes', 'string', 'max:50'], diff --git a/tests/Feature/SubjectManagementTest.php b/tests/Feature/SubjectManagementTest.php index ed9e34d1..b923d72f 100644 --- a/tests/Feature/SubjectManagementTest.php +++ b/tests/Feature/SubjectManagementTest.php @@ -152,3 +152,35 @@ 'sort_order', ]); }); + +test('admin can create subjects with same name in different courses', function () { + $admin = adminUserWithPermissions(['view admin', 'create subjects']); + + Subject::create([ + 'name' => 'Physics', + 'english_name' => 'Physics', + 'slug' => 'hsc-physics', + 'course' => 'hsc', + 'tailwind_format' => 'bg-slate-500', + 'icon' => 'book-open', + 'sort_order' => 1, + ]); + + $response = $this->actingAs($admin)->post('/admin/subjects', [ + 'name' => 'Physics', + 'english_name' => 'Physics', + 'course' => 'ssc', + 'tailwind_format' => 'bg-slate-500', + 'icon' => 'book-open', + 'sort_order' => 1, + ]); + + $response->assertRedirect(); + $response->assertSessionHas('success', 'Subject created successfully.'); + + $this->assertDatabaseHas('subjects', [ + 'name' => 'Physics', + 'course' => 'ssc', + 'slug' => 'ssc-physics', + ]); +});