withoutExceptionHandling(); // GIVEN $htmlDateInputFormat = 'Y-m-d\TH:i'; $user = User::factory()->createOne(); $route = route('bo.slides.store'); $formData = [ 'title' => '1rst Slide', 'text' => 'Super slide content', 'date_start' => Date::now()->format($htmlDateInputFormat), 'date_end' => Date::now()->addDay()->format($htmlDateInputFormat), 'client_timezone' => 'Europe/Paris', ]; // WHEN $reponse = $this->actingAs($user, 'backend')->post($route, $formData); // THEN $reponse->assertRedirect( route( 'bo.slides.edit', Slide::query()->latest()->firstOrFail() ) ); }); it('Can edit a slide', function (): void { /** @var \Tests\TestCase $this */ // GIVEN $user = User::factory()->createOne(); $slide = Slide::factory()->createOne(); $route = route('bo.slides.edit', $slide); // WHEN $reponse = $this->actingAs($user, 'backend')->get($route); // THEN $reponse->assertOk(); }); it('Can update a slide', function (): void { /** @var \Tests\TestCase $this */ $this->withoutExceptionHandling(); // GIVEN $user = User::factory()->createOne(); $slide = Slide::factory()->createOne(); $route = route('bo.slides.update', $slide); $formData = [ 'title' => 'Update Slide', 'text' => 'Super slide content updated', 'date_start' => Date::now()->format('Y-m-d\TH:i'), 'date_end' => Date::now()->addDay()->format('Y-m-d\TH:i'), 'client_timezone' => 'Europe/Paris', ]; // WHEN $reponse = $this->actingAs($user, 'backend')->put($route, $formData); // THEN $reponse->assertRedirect( route('bo.slides.edit', $slide) ); }); it('Can delete a slide', function (): void { /** @var \Tests\TestCase $this */ // GIVEN $user = User::factory()->createOne(); $slide = Slide::factory()->createOne(); $route = route('bo.slides.destroy', $slide); // WHEN $reponse = $this->actingAs($user, 'backend')->delete($route); // THEN $reponse->assertRedirect(route('bo.slides.index')); }); it('Can update a slide order', function (): void { /** @var \Tests\TestCase $this */ // GIVEN $user = User::factory()->createOne(); $slide = Slide::factory()->createOne(); $slide2 = Slide::factory()->createOne(); $route = route('bo.slides.change-order', [$slide, 'down']); $fromRoute = route('bo.slides.index'); $slideOrder = $slide->order; $slide2Order = $slide2->order; // WHEN $this->actingAs($user, 'backend')->get($fromRoute); // * First Navigation $reponse = $this->actingAs($user, 'backend')->patch($route); $slide->refresh(); $slide2->refresh(); // THEN $reponse->assertRedirect($fromRoute); expect($slideOrder)->toBe($slide2->order); expect($slide2Order)->toBe($slide->order); }); });