114 lines
3.6 KiB
PHP
114 lines
3.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Models\Slide;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Date;
|
|
|
|
describe('On Slide CRUD', function (): void {
|
|
|
|
it('Can create a slide', function (): void {
|
|
/** @var \Tests\TestCase $this */
|
|
$this->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);
|
|
});
|
|
});
|