diff --git a/app/Observers/EntryObserver.php b/app/Observers/EntryObserver.php index 4d6614f..aa020d8 100644 --- a/app/Observers/EntryObserver.php +++ b/app/Observers/EntryObserver.php @@ -35,10 +35,7 @@ class EntryObserver { $syncer = app(DoublerSync::class); // Update doubler table when an entry is updated - $syncer($entry->audition->event_id); - if ($entry->wasChanged('audition_id')) { - $syncer(); - } + $syncer(); } /** @@ -51,20 +48,4 @@ class EntryObserver $audition = Audition::where('id', $entry->audition_id)->first(); $syncer($audition->event_id); } - - /** - * Handle the Entry "restored" event. - */ - public function restored(Entry $entry): void - { - - } - - /** - * Handle the Entry "force deleted" event. - */ - public function forceDeleted(Entry $entry): void - { - - } } diff --git a/database/factories/AuditionFactory.php b/database/factories/AuditionFactory.php index e221203..da45e79 100644 --- a/database/factories/AuditionFactory.php +++ b/database/factories/AuditionFactory.php @@ -44,8 +44,8 @@ class AuditionFactory extends Factory 'score_order' => $this->faker->numberBetween(2, 50), 'entry_deadline' => Carbon::tomorrow(), 'entry_fee' => 1000, - 'minimum_grade' => $this->faker->numberBetween(7, 9), - 'maximum_grade' => $this->faker->numberBetween(8, 12), + 'minimum_grade' => 1, + 'maximum_grade' => 20, 'for_seating' => 1, 'for_advancement' => 1, 'room_id' => null, diff --git a/tests/Feature/app/Observers/EntryObserverTest.php b/tests/Feature/app/Observers/EntryObserverTest.php new file mode 100644 index 0000000..dcef89e --- /dev/null +++ b/tests/Feature/app/Observers/EntryObserverTest.php @@ -0,0 +1,47 @@ +mock = Mockery::mock(DoublerSync::class); + app()->instance(DoublerSync::class, $this->mock); +}); + +afterEach(function () { + Mockery::close(); +}); + +it('syncs doublers if an entry is created that makes or adds to a doubler', function () { + $event = Event::factory()->create(); + $student = Student::factory()->create(); + $audition1 = Audition::factory()->forEvent($event)->create(); + $audition2 = Audition::factory()->forEvent($event)->create(); + $audition3 = Audition::factory()->forEvent($event)->create(); + $entryMaker = app(CreateEntry::class); + $this->mock->shouldReceive('__invoke')->twice(); + $entryMaker($student, $audition1); + $entryMaker($student, $audition2); + $entryMaker($student, $audition3); +}); + +it('syncs doublers when an entry is updated', function () { + $this->mock->shouldReceive('__invoke')->once(); + $entry = Entry::factory()->create(); + $entry->update(['audition_id' => Audition::factory()->create()->id]); +}); + +it('syncs doublers when an entry is deleted', function () { + $this->mock->shouldReceive('__invoke')->once(); + $entry = Entry::factory()->create(); + $entry->delete(); +});