Files
coolify/tests/Feature/EmptyStateComponentTest.php
T
Andras Bacsai 6b41899d5b feat(ui): add custom theme color and polish light-mode theming
Support a custom accent theme across nav, terminal, scrollbars, and loaders.
Improve light-mode tokens, helper popup placement, and theme persistence
(including purple→custom migration). Cover with appearance and scrollbar tests.
2026-08-06 16:59:41 +02:00

66 lines
2.5 KiB
PHP

<?php
it('renders the dashed empty-state card with title description and icon', function () {
$html = $this->blade(
'<x-empty title="No tags yet" description="Add a tag to group deployments." icon-name="tags" />'
);
$html->assertSee('No tags yet')
->assertSee('Add a tag to group deployments.')
->assertSee('empty-state', false)
->assertSee('border-dashed', false)
->assertSee('min-h-80', false);
});
it('renders empty states flush with no outer inset inside settings sections', function () {
$html = $this->blade(
<<<'BLADE'
<x-application.settings-section title="Scheduled tasks" flush>
<x-empty title="No scheduled tasks"
description="Create a task to run maintenance commands."
icon-name="browser-terminal" />
</x-application.settings-section>
BLADE
);
$html->assertSee('is-flush', false)
->assertSee('empty-state', false)
->assertSee('No scheduled tasks');
$css = file_get_contents(resource_path('css/app.css'));
expect($css)
->toContain('.application-settings-section-body.is-flush .empty-state')
->toContain('.application-settings-section-body:has(> .empty-state:only-child)')
->toContain('.application-settings-section > .empty-state')
->toMatch('/\.application-settings-section-body\.is-flush \.empty-state[\s\S]*?margin:\s*0/');
});
it('insets empty states nested inside a flush settings section wrapper', function () {
$css = file_get_contents(resource_path('css/app.css'));
expect($css)->toContain('.application-settings-section-body.is-flush > div:has(> .empty-state:only-child)');
});
it('renders compact size without the full-page min height class', function () {
$html = $this->blade(
'<x-empty title="No cloud tokens" description="Add a provider token." icon-name="keys" size="sm" />'
);
$html->assertSee('No cloud tokens')
->assertSee('min-h-44', false)
->assertDontSee('min-h-80', false);
});
it('renders action content from both contents and actions slots', function () {
$contents = $this->blade(
'<x-empty title="Empty" icon-name="keys"><x-slot:contents><button type="button">From contents</button></x-slot:contents></x-empty>'
);
$contents->assertSee('From contents');
$actions = $this->blade(
'<x-empty title="Empty" icon-name="keys"><x-slot:actions><button type="button">From actions</button></x-slot:actions></x-empty>'
);
$actions->assertSee('From actions');
});