Files
coolify/tests/Feature/DomainChipsComponentTest.php
T

67 lines
2.6 KiB
PHP

<?php
it('provides a reusable domain chips form component', function () {
$component = file_get_contents(resource_path('views/components/forms/domain-chips.blade.php'));
expect($component)
->toContain('chip-input')
->toContain('@entangle($model)')
->toContain('class="chip"')
->toContain('chip-remove');
});
it('uses domain chips for application public access and compose services', function () {
$blade = file_get_contents(resource_path('views/livewire/project/application/general.blade.php'));
expect($blade)
->toContain('x-forms.domain-chips')
->toContain('model="fqdn"')
->toContain(':model="$composeDomainKey"')
->not->toContain('id="parsedServiceDomains.');
});
it('uses domain chips for service application domains and edit domain modal', function () {
$serviceIndex = file_get_contents(resource_path('views/livewire/project/service/index.blade.php'));
$editDomain = file_get_contents(resource_path('views/livewire/project/service/edit-domain.blade.php'));
expect($serviceIndex)
->toContain('x-forms.domain-chips')
->toContain('model="fqdn"')
->toContain('Make publicly available')
->toContain('enablePublicAccess')
->toContain('disablePublicAccess')
->toContain("x-bind:disabled=\"!String(port ?? '').trim()\"")
->toContain('sm:flex-row sm:items-end')
->not->toContain('label="Make it publicly available"')
// Nested @if inside <x-forms.button> breaks Blade component compilation (ParseError endif).
->not->toContain('@if ($canTogglePublicAccess)');
expect($editDomain)
->toContain('x-forms.domain-chips')
->toContain('model="fqdn"')
->not->toContain('id="fqdn"');
});
it('styles icon buttons with a visible hover state', function () {
$utilities = file_get_contents(resource_path('css/utilities.css'));
$resourceCard = file_get_contents(resource_path('views/livewire/project/service/resource-card.blade.php'));
expect($utilities)
->toContain('@utility icon-button')
->toContain('hover:bg-neutral-100')
->toContain('dark:hover:bg-white/[0.07]');
expect($resourceCard)
->toContain('class="icon-button shrink-0"')
->toContain('title="Edit domains"');
});
it('exposes enable and disable public access methods on service index', function () {
$source = file_get_contents(app_path('Livewire/Project/Service/Index.php'));
expect($source)
->toContain('public function enablePublicAccess(): void')
->toContain('public function disablePublicAccess(): void')
->toContain('$this->instantSave()');
});