96 lines
5.0 KiB
PHP
Executable File
96 lines
5.0 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* GitSpellcheckSettingsUiFilesTest.php
|
|
*
|
|
* Guards the Helpdesk Git webhook, ticket comment spellcheck and settings UI polish files.
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Modules\Helpdesk\Tests\Feature;
|
|
|
|
use Tests\TestCase;
|
|
|
|
final class GitSpellcheckSettingsUiFilesTest extends TestCase
|
|
{
|
|
/**
|
|
* Ensure Git webhook ingestion accepts practical provider payload variants and flexible ticket references.
|
|
*/
|
|
public function test_git_webhook_ingestion_supports_common_provider_payload_variants(): void
|
|
{
|
|
$service = base_path('Modules/Helpdesk/Services/GitWebhookIngestionService.php');
|
|
$controller = base_path('Modules/Helpdesk/Http/Controllers/GitWebhookController.php');
|
|
|
|
$this->assertFileExists($service);
|
|
$this->assertFileExists($controller);
|
|
|
|
$serviceContents = file_get_contents($service) ?: '';
|
|
$controllerContents = file_get_contents($controller) ?: '';
|
|
|
|
self::assertStringContainsString('head_commit', $serviceContents);
|
|
self::assertStringContainsString('push.changes.0.commits', $serviceContents);
|
|
self::assertStringContainsString('HD[-\\s_]?', $serviceContents);
|
|
self::assertStringContainsString('sprintf(\'HD-%s-%05d\'', $serviceContents);
|
|
self::assertStringContainsString('hasValidBitbucketSignature', $controllerContents);
|
|
self::assertStringContainsString('hasValidGenericSignature', $controllerContents);
|
|
}
|
|
|
|
/**
|
|
* Ensure all ticket comment editors request native browser spellcheck assistance.
|
|
*/
|
|
public function test_ticket_comment_editors_enable_spellcheck_and_language_hints(): void
|
|
{
|
|
$ticketShow = base_path('Modules/Helpdesk/Resources/views/livewire/ticket-show.blade.php');
|
|
$commentThread = base_path('Modules/Helpdesk/Resources/views/partials/comment-thread.blade.php');
|
|
|
|
$ticketShowContents = file_get_contents($ticketShow) ?: '';
|
|
$commentThreadContents = file_get_contents($commentThread) ?: '';
|
|
|
|
self::assertStringContainsString('contenteditable="true" role="textbox" aria-multiline="true" spellcheck="true" lang="en-GB"', $ticketShowContents);
|
|
self::assertStringContainsString('name="commentBody" required spellcheck="true" lang="en-GB"', $ticketShowContents);
|
|
self::assertStringContainsString('data-helpdesk-comment-subject', $ticketShowContents);
|
|
self::assertStringContainsString('spellcheck="true" lang="en-GB" autocorrect="on"', $commentThreadContents);
|
|
self::assertStringContainsString('autocapitalize="sentences" inputmode="text"', $commentThreadContents);
|
|
}
|
|
|
|
/**
|
|
* Ensure settings sections use the polished Abbott-style card treatment.
|
|
*/
|
|
public function test_settings_sections_use_professional_card_treatment(): void
|
|
{
|
|
$settingsSection = base_path('Modules/Helpdesk/Resources/views/components/settings-section.blade.php');
|
|
$contents = file_get_contents($settingsSection) ?: '';
|
|
|
|
self::assertStringContainsString('rounded-2xl', $contents);
|
|
self::assertStringContainsString('bg-gradient-to-r from-slate-950 via-blue-950 to-slate-900', $contents);
|
|
self::assertStringContainsString('Configuration', $contents);
|
|
self::assertStringContainsString("[&_input:not([type='checkbox']):not([type='radio']):not([type='color'])]:min-h-9", $contents);
|
|
self::assertStringContainsString('dark:bg-zinc-950/45', $contents);
|
|
}
|
|
|
|
/**
|
|
* Ensure settings lookup forms stay aligned and avoid oversized colour controls.
|
|
*/
|
|
public function test_lookup_settings_forms_use_compact_aligned_grid_layouts(): void
|
|
{
|
|
$settingsManager = base_path('Modules/Helpdesk/Resources/views/livewire/settings-manager.blade.php');
|
|
$colourSelect = base_path('Modules/Helpdesk/Resources/views/components/colour-select.blade.php');
|
|
|
|
$settingsContents = file_get_contents($settingsManager) ?: '';
|
|
$colourContents = file_get_contents($colourSelect) ?: '';
|
|
|
|
self::assertStringContainsString('grid gap-3 xl:grid-cols-12', $settingsContents);
|
|
self::assertStringContainsString('class="xl:col-span-12" model="statusForm.color"', $settingsContents);
|
|
self::assertStringContainsString('class="xl:col-span-12" model="priorityForm.color"', $settingsContents);
|
|
self::assertStringContainsString('class="xl:col-span-12" model="categoryForm.color"', $settingsContents);
|
|
self::assertStringContainsString('class="xl:col-span-12" model="teamForm.color"', $settingsContents);
|
|
self::assertStringContainsString('class="xl:col-span-12" model="projectForm.color"', $settingsContents);
|
|
self::assertStringContainsString('class="xl:col-span-12" model="tagForm.color"', $settingsContents);
|
|
self::assertStringContainsString('grid grid-cols-[2.75rem_minmax(0,11rem)]', $colourContents);
|
|
self::assertStringContainsString('aria-label="Custom hex colour"', $colourContents);
|
|
self::assertStringContainsString('h-9 w-full rounded-lg', $colourContents);
|
|
self::assertStringNotContainsString('<flux:input', $colourContents);
|
|
}
|
|
}
|