12-05-2026 admin, Panel Displays
This commit is contained in:
parent
0762e3beac
commit
6a65354f4c
43 changed files with 3273 additions and 410 deletions
|
|
@ -6,12 +6,13 @@ use App\Livewire\Admin\Cms\DisplayVersionList;
|
|||
use App\Models\DisplayVersion;
|
||||
use App\Models\DisplayVersionItem;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use Livewire\Livewire;
|
||||
|
||||
beforeEach(function () {
|
||||
$portalDomain = config('domains.domain_portal');
|
||||
Livewire::withoutLazyLoading();
|
||||
url()->forceRootUrl('https://'.$portalDomain);
|
||||
URL::forceRootUrl('https://'.$portalDomain);
|
||||
});
|
||||
|
||||
// ========================================
|
||||
|
|
@ -19,7 +20,7 @@ beforeEach(function () {
|
|||
// ========================================
|
||||
|
||||
test('display version list requires authentication', function () {
|
||||
$response = $this->get(route('admin.cms.display-versions'));
|
||||
$response = $this->get(route('admin.cms.display-modules'));
|
||||
|
||||
$response->assertRedirect('/login');
|
||||
});
|
||||
|
|
@ -29,7 +30,7 @@ test('display version list renders for authenticated users', function () {
|
|||
|
||||
$this->actingAs($user);
|
||||
|
||||
$response = $this->get(route('admin.cms.display-versions'));
|
||||
$response = $this->get(route('admin.cms.display-modules'));
|
||||
|
||||
$response->assertSuccessful();
|
||||
$response->assertSeeLivewire(DisplayVersionList::class);
|
||||
|
|
@ -50,6 +51,8 @@ test('can create a display version', function () {
|
|||
expect($version->type)->toBe(DisplayVersionType::B2in);
|
||||
expect($version->settings)->toBeArray();
|
||||
expect($version->settings)->toHaveKey('theme');
|
||||
expect($version->settings)->toHaveKey('header_logo_url');
|
||||
expect($version->settings)->toHaveKey('footer_url');
|
||||
});
|
||||
|
||||
test('create version validates required fields', function () {
|
||||
|
|
@ -95,12 +98,59 @@ test('display version editor renders with correct version data', function () {
|
|||
|
||||
$this->actingAs($user);
|
||||
|
||||
$response = $this->get(route('admin.cms.display-version-edit', $version));
|
||||
$response = $this->get(route('admin.cms.display-module-edit', $version));
|
||||
|
||||
$response->assertSuccessful();
|
||||
$response->assertSeeLivewire(DisplayVersionEditor::class);
|
||||
});
|
||||
|
||||
test('old display version routes redirect to module routes', function () {
|
||||
$user = User::factory()->create();
|
||||
$version = DisplayVersion::factory()->create();
|
||||
|
||||
$this->actingAs($user);
|
||||
|
||||
$this->get(route('admin.cms.display-versions'))
|
||||
->assertRedirect(route('admin.cms.display-modules'));
|
||||
|
||||
$this->get(route('admin.cms.display-version-edit', $version))
|
||||
->assertRedirect(route('admin.cms.display-module-edit', $version));
|
||||
});
|
||||
|
||||
test('display module editor renders module preview', function () {
|
||||
$user = User::factory()->create();
|
||||
$version = DisplayVersion::factory()->create(['name' => 'Preview Modul']);
|
||||
|
||||
$this->actingAs($user);
|
||||
|
||||
$response = $this->get(route('admin.cms.display-module-edit', $version));
|
||||
|
||||
$response->assertSuccessful();
|
||||
$response->assertSee('Modul-Vorschau');
|
||||
$response->assertSee('/preview/module/'.$version->id, false);
|
||||
});
|
||||
|
||||
test('item edit modal renders module iframe preview', function () {
|
||||
$user = User::factory()->create();
|
||||
$version = DisplayVersion::factory()->create(['type' => 'offers']);
|
||||
$item = DisplayVersionItem::factory()->create([
|
||||
'display_version_id' => $version->id,
|
||||
'item_type' => 'slide',
|
||||
'content' => [
|
||||
'type' => 'product-hero',
|
||||
'title' => 'Preview Slide',
|
||||
'image_url' => '../assets/preview.jpg',
|
||||
],
|
||||
]);
|
||||
|
||||
Livewire::actingAs($user)
|
||||
->test(DisplayVersionEditor::class, ['displayVersion' => $version])
|
||||
->call('openItemModal', $item->id)
|
||||
->assertSee('Einzel-Vorschau im Bearbeiten-Dialog')
|
||||
->assertSee('/preview/module/'.$version->id.'/item/'.$item->id, false)
|
||||
->assertSee('Schließen');
|
||||
});
|
||||
|
||||
test('can add a video item to video-display version', function () {
|
||||
$user = User::factory()->create();
|
||||
$version = DisplayVersion::factory()->create(['type' => 'video-display']);
|
||||
|
|
@ -162,6 +212,36 @@ test('can edit an existing item', function () {
|
|||
expect($item->content['title'])->toBe('New Title');
|
||||
});
|
||||
|
||||
test('updating an item keeps modal open and refreshes iframe preview', function () {
|
||||
$user = User::factory()->create();
|
||||
$version = DisplayVersion::factory()->create(['type' => 'offers']);
|
||||
$item = DisplayVersionItem::factory()->create([
|
||||
'display_version_id' => $version->id,
|
||||
'item_type' => 'slide',
|
||||
'content' => [
|
||||
'type' => 'product-hero',
|
||||
'title' => 'Old Title',
|
||||
'image_url' => '../assets/old.jpg',
|
||||
],
|
||||
]);
|
||||
|
||||
$component = Livewire::actingAs($user)
|
||||
->test(DisplayVersionEditor::class, ['displayVersion' => $version])
|
||||
->call('openItemModal', $item->id);
|
||||
|
||||
$initialRefreshCounter = $component->get('previewFrameRefreshCounter');
|
||||
|
||||
$component
|
||||
->set('slideTitle', 'New Title')
|
||||
->call('saveItem')
|
||||
->assertSet('showItemModal', true)
|
||||
->assertSet('itemId', $item->id)
|
||||
->assertSee('Einzel-Vorschau im Bearbeiten-Dialog');
|
||||
|
||||
expect($item->fresh()->content['title'])->toBe('New Title');
|
||||
expect($component->get('previewFrameRefreshCounter'))->toBeGreaterThan($initialRefreshCounter);
|
||||
});
|
||||
|
||||
test('can delete an item', function () {
|
||||
$user = User::factory()->create();
|
||||
$version = DisplayVersion::factory()->create();
|
||||
|
|
@ -309,7 +389,31 @@ test('can save version settings', function () {
|
|||
->test(DisplayVersionEditor::class, ['displayVersion' => $version])
|
||||
->call('openSettingsModal')
|
||||
->set('settings.theme', 'light')
|
||||
->set('settings.header_claim', 'Custom Claim')
|
||||
->set('settings.footer_prefix', 'powered by')
|
||||
->call('saveSettings');
|
||||
|
||||
expect($version->fresh()->settings['theme'])->toBe('light');
|
||||
expect($version->fresh()->settings['header_claim'])->toBe('Custom Claim');
|
||||
expect($version->fresh()->settings['footer_prefix'])->toBe('powered by');
|
||||
});
|
||||
|
||||
test('module settings expose player chrome fields in the editor', function () {
|
||||
$user = User::factory()->create();
|
||||
$version = DisplayVersion::factory()->create(['type' => 'offers']);
|
||||
|
||||
Livewire::actingAs($user)
|
||||
->test(DisplayVersionEditor::class, ['displayVersion' => $version])
|
||||
->assertSee('Meta-Einstellungen für dieses Modul')
|
||||
->assertSee('Diese Werte gelten für die gesamte Media-Playlist bzw. alle Slides dieses Moduls.')
|
||||
->call('openSettingsModal')
|
||||
->assertSee('Branding')
|
||||
->assertSee('Logo URL')
|
||||
->assertDontSee('Logo Alt-Text')
|
||||
->assertSee('Brand-Text')
|
||||
->assertSee('Footer & QR für alle Slides')
|
||||
->assertSee('Footer-Claim')
|
||||
->assertSee('Web/QR-URL')
|
||||
->assertSee('Standard QR-Titel')
|
||||
->assertSee('QR-Unterzeile');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue