core timer fixes

This commit is contained in:
Mark Gregory
2026-06-23 10:19:51 +01:00
parent ed298eac38
commit 0a673690a3
11 changed files with 231 additions and 353 deletions
@@ -0,0 +1,35 @@
<?php
namespace Modules\Helpdesk\Tests\Feature;
use Tests\TestCase;
class TicketTimerCleanUiFilesTest extends TestCase
{
/**
* Timer markup should live in one loaded component without duplicated control-panel timer displays.
*/
public function test_ticket_controls_do_not_duplicate_timer_display_logic(): void
{
$controls = (string) file_get_contents(base_path('Modules/Helpdesk/resources/views/partials/ticket-controls.blade.php'));
$timer = (string) file_get_contents(base_path('Modules/Helpdesk/resources/views/livewire/ticket-timer.blade.php'));
$provider = (string) file_get_contents(base_path('Modules/Helpdesk/Providers/HelpdeskServiceProvider.php'));
$this->assertStringContainsString("@include('helpdesk::partials.ticket-time-timer'", $controls);
$this->assertStringNotContainsString('data-helpdesk-running-summary-badge', $controls);
$this->assertStringNotContainsString('data-helpdesk-panel-elapsed', $controls);
$this->assertStringNotContainsString('MutationObserver', $controls);
$this->assertStringContainsString('data-helpdesk-live-elapsed', $timer);
$this->assertStringContainsString("Livewire::component('helpdesk.ticket-timer'", $provider);
}
/**
* The module must not contain accidental duplicate Blade folders or macOS artefacts.
*/
public function test_helpdesk_module_does_not_contain_known_rubbish_files(): void
{
$this->assertDirectoryDoesNotExist(base_path('Modules/Helpdesk/resources/views/views'));
$this->assertFileDoesNotExist(base_path('Modules/Helpdesk/.DS_Store'));
$this->assertFileDoesNotExist(base_path('Modules/Helpdesk/resources/.DS_Store'));
}
}
@@ -13,10 +13,10 @@ class TicketTimerLiveDisplayFilesTest extends TestCase
{
$view = (string) file_get_contents(base_path('Modules/Helpdesk/resources/views/livewire/ticket-timer.blade.php'));
$this->assertStringContainsString('x-data', $view);
$this->assertStringContainsString('data-helpdesk-live-elapsed', $view);
$this->assertStringContainsString('Date.parse', $view);
$this->assertStringContainsString('setInterval', $view);
$this->assertStringContainsString('started_at', $view);
$this->assertStringContainsString('data-helpdesk-started-at', $view);
$this->assertStringContainsString('data-dusk="ticket-running-time"', $view);
$this->assertStringNotContainsString('localStorage', $view);
$this->assertStringNotContainsString('sessionStorage', $view);
@@ -18,9 +18,9 @@ class TicketTimerSecondsFilesTest extends TestCase
$this->assertStringContainsString("'seconds'", $component);
$this->assertStringContainsString("'seconds'", $model);
$this->assertStringContainsString('diffInSeconds', $component);
$this->assertStringContainsString('sum(\'seconds\')', $component);
$this->assertStringContainsString('HH:MM:SS', 'HH:MM:SS');
$this->assertStringContainsString('formatted()', $view);
$this->assertStringContainsString('sum('seconds')', $component);
$this->assertStringContainsString('formatElapsed', $view);
$this->assertStringContainsString('data-helpdesk-live-elapsed', $view);
$this->assertStringNotContainsString('localStorage', $component);
$this->assertStringNotContainsString('localStorage', $view);
}
@@ -33,7 +33,7 @@ class TicketTimerSecondsFilesTest extends TestCase
$partial = (string) file_get_contents(base_path('Modules/Helpdesk/resources/views/partials/ticket-time-log-history-query.blade.php'));
$this->assertStringContainsString('TicketTimeLog::query()', $partial);
$this->assertStringContainsString('whereNotNull(\'ended_at\')', $partial);
$this->assertStringContainsString('whereNotNull('ended_at')', $partial);
$this->assertStringContainsString('seconds', $partial);
}
}
@@ -13,13 +13,14 @@ class TicketTimerStartDisplayFilesTest extends TestCase
{
$component = (string) file_get_contents(base_path('Modules/Helpdesk/Livewire/TicketTimer.php'));
$view = (string) file_get_contents(base_path('Modules/Helpdesk/resources/views/livewire/ticket-timer.blade.php'));
$partial = (string) file_get_contents(base_path('Modules/Helpdesk/resources/views/partials/ticket-time-timer.blade.php'));
$this->assertStringContainsString('$this->activeTimer = $timer->fresh();', $component);
$this->assertStringContainsString('$this->elapsedSeconds = 0;', $component);
$this->assertStringContainsString("dispatch('timer-started')", $component);
$this->assertStringContainsString('$hasRunningTimer = $activeTimer && $activeTimer->ended_at === null;', $view);
$this->assertStringContainsString('data-helpdesk-running-timer', $view);
$this->assertStringContainsString('x-on:timer-started.window', $view);
$this->assertStringContainsString('data-helpdesk-live-elapsed', $view);
$this->assertStringContainsString("@livewire('helpdesk.ticket-timer'", $partial);
$this->assertStringNotContainsString('wire:ignore', $view);
}
}