Files
coolify/tests/Feature/ProfileAppearanceNavigationTest.php
T
Andras Bacsai 0312cc8ffb feat(ui): polish email modal, search loading, and volume tables
Move profile email change into a modal with Alpine focus/close handling,
show a loading overlay during command-palette navigation, and adjust
volumes/config-diff grids plus related service/storage UI. Cover with
feature tests for search, profile, storage, and domains.
2026-08-05 14:07:19 +02:00

55 lines
2.3 KiB
PHP

<?php
it('adds profile navigation with an appearance tab and route', function () {
$routes = file_get_contents(base_path('routes/web.php'));
$profileNavbar = file_get_contents(resource_path('views/components/profile/navbar.blade.php'));
$profileView = file_get_contents(resource_path('views/livewire/profile/index.blade.php'));
expect($routes)
->toContain("Route::get('/profile/appearance', ProfileAppearance::class)->name('profile.appearance')")
->and($profileNavbar)
->toContain('route(\'profile\')')
->toContain('route(\'profile.appearance\')')
->toContain('General')
->toContain('Appearance')
->and($profileView)
->toContain('<x-profile.navbar />')
->not->toContain('<h1>Profile</h1>\n <div class="subtitle -mt-2">');
});
it('opens the email change form without a Livewire request', function () {
$profileView = file_get_contents(resource_path('views/livewire/profile/index.blade.php'));
expect($profileView)
->toContain('@click="openEmailModal()"')
->toContain('this.$refs.newEmailInput?.focus()')
->toContain('x-ref="newEmailInput"')
->toContain('x-show="emailModalOpen"')
->toContain('x-teleport="body"')
->toContain('Change email')
->toContain('Send code')
->toContain('Verify email')
->not->toContain('>Cancel</x-forms.button>')
->not->toContain('wire:click="showEmailChangeForm"');
});
it('keeps color theme preferences on the profile appearance view without page width or density controls', function () {
$appearanceView = file_get_contents(resource_path('views/livewire/profile/appearance.blade.php'));
expect($appearanceView)
->toContain('<x-profile.navbar />')
->toContain('Color theme')
->toContain("setTheme('{{ \$option['value'] }}')")
->toContain("['value' => 'light'")
->toContain("['value' => 'system'")
->toContain("['value' => 'dark'")
->not->toContain('Page width')
->not->toContain('Interface density')
->not->toContain('setWidth(')
->not->toContain('setZoom(')
->not->toContain('pageWidth')
->not->toContain("localStorage.getItem('zoom')")
->not->toContain("localStorage.setItem('pageWidth'")
->not->toContain("localStorage.setItem('zoom'");
});