148 lines
4.5 KiB
PHP
148 lines
4.5 KiB
PHP
<?php
|
|
|
|
use App\Livewire\Admin\Cms\DisplayList;
|
|
use App\Models\Display;
|
|
use App\Models\DisplayVersion;
|
|
use App\Models\User;
|
|
use Livewire\Livewire;
|
|
|
|
beforeEach(function () {
|
|
$portalDomain = config('domains.domain_portal');
|
|
Livewire::withoutLazyLoading();
|
|
url()->forceRootUrl('https://'.$portalDomain);
|
|
});
|
|
|
|
test('display list requires authentication', function () {
|
|
$response = $this->get(route('admin.cms.displays'));
|
|
|
|
$response->assertRedirect('/login');
|
|
});
|
|
|
|
test('display list renders for authenticated users', function () {
|
|
$user = User::factory()->create();
|
|
|
|
$this->actingAs($user);
|
|
|
|
$response = $this->get(route('admin.cms.displays'));
|
|
|
|
$response->assertSuccessful();
|
|
$response->assertSeeLivewire(DisplayList::class);
|
|
});
|
|
|
|
test('can create a display', function () {
|
|
$user = User::factory()->create();
|
|
|
|
Livewire::actingAs($user)
|
|
->test(DisplayList::class)
|
|
->call('openModal')
|
|
->set('displayName', 'Display 1 - Eingang')
|
|
->set('displayLocation', 'Schaufenster links')
|
|
->call('save');
|
|
|
|
expect(Display::where('name', 'Display 1 - Eingang')->exists())->toBeTrue();
|
|
});
|
|
|
|
test('can assign versions to a display', function () {
|
|
$user = User::factory()->create();
|
|
$version1 = DisplayVersion::factory()->create();
|
|
$version2 = DisplayVersion::factory()->create();
|
|
$display = Display::factory()->create();
|
|
|
|
Livewire::actingAs($user)
|
|
->test(DisplayList::class)
|
|
->call('openModal', $display->id)
|
|
->call('addVersion', $version1->id)
|
|
->call('addVersion', $version2->id)
|
|
->call('save');
|
|
|
|
$display->refresh();
|
|
expect($display->versions)->toHaveCount(2);
|
|
expect($display->versions->first()->id)->toBe($version1->id);
|
|
expect($display->versions->last()->id)->toBe($version2->id);
|
|
});
|
|
|
|
test('can reorder versions in playlist', function () {
|
|
$user = User::factory()->create();
|
|
$version1 = DisplayVersion::factory()->create();
|
|
$version2 = DisplayVersion::factory()->create();
|
|
$display = Display::factory()->create();
|
|
|
|
Livewire::actingAs($user)
|
|
->test(DisplayList::class)
|
|
->call('openModal', $display->id)
|
|
->call('addVersion', $version1->id)
|
|
->call('addVersion', $version2->id)
|
|
->call('moveVersion', 1, 'up')
|
|
->call('save');
|
|
|
|
$display->refresh();
|
|
expect($display->versions->first()->id)->toBe($version2->id);
|
|
expect($display->versions->last()->id)->toBe($version1->id);
|
|
});
|
|
|
|
test('can remove version from playlist', function () {
|
|
$user = User::factory()->create();
|
|
$version1 = DisplayVersion::factory()->create();
|
|
$version2 = DisplayVersion::factory()->create();
|
|
$display = Display::factory()->create();
|
|
$display->versions()->attach([
|
|
$version1->id => ['sort_order' => 0],
|
|
$version2->id => ['sort_order' => 1],
|
|
]);
|
|
|
|
Livewire::actingAs($user)
|
|
->test(DisplayList::class)
|
|
->call('openModal', $display->id)
|
|
->call('removeVersion', 0)
|
|
->call('save');
|
|
|
|
$display->refresh();
|
|
expect($display->versions)->toHaveCount(1);
|
|
expect($display->versions->first()->id)->toBe($version2->id);
|
|
});
|
|
|
|
test('can delete a display', function () {
|
|
$user = User::factory()->create();
|
|
$display = Display::factory()->create();
|
|
|
|
Livewire::actingAs($user)
|
|
->test(DisplayList::class)
|
|
->call('deleteDisplay', $display->id);
|
|
|
|
expect(Display::find($display->id))->toBeNull();
|
|
});
|
|
|
|
test('can toggle display active status', function () {
|
|
$user = User::factory()->create();
|
|
$display = Display::factory()->create(['is_active' => true]);
|
|
|
|
Livewire::actingAs($user)
|
|
->test(DisplayList::class)
|
|
->call('toggleActive', $display->id);
|
|
|
|
expect($display->fresh()->is_active)->toBeFalse();
|
|
});
|
|
|
|
test('validates required fields when creating display', function () {
|
|
$user = User::factory()->create();
|
|
|
|
Livewire::actingAs($user)
|
|
->test(DisplayList::class)
|
|
->call('openModal')
|
|
->set('displayName', '')
|
|
->call('save')
|
|
->assertHasErrors(['displayName']);
|
|
});
|
|
|
|
test('does not add duplicate version to playlist', function () {
|
|
$user = User::factory()->create();
|
|
$version = DisplayVersion::factory()->create();
|
|
|
|
$component = Livewire::actingAs($user)
|
|
->test(DisplayList::class)
|
|
->call('openModal')
|
|
->call('addVersion', $version->id)
|
|
->call('addVersion', $version->id);
|
|
|
|
expect($component->get('selectedVersionIds'))->toHaveCount(1);
|
|
});
|