major updates

This commit is contained in:
Mark Gregory
2026-06-17 11:26:08 +01:00
parent 3b1fc48a3d
commit c4646d2f5c
10 changed files with 256 additions and 51 deletions
@@ -79,11 +79,17 @@ final class HelpdeskTicketBrowserTest extends DuskTestCase
->waitForText('Hello Response Browser User', 10)
->assertSee('Inserted canned browser response')
->assertDontSee('<p>Hello')
->assertInputValue('subject', 'Browser canned response')
->assertInputValue('commentBody', '<p>Hello Response Browser User</p><p>Inserted canned browser response for '.$ticket->reference.'</p>')
->press('@post-comment')
->waitForText('Hello Response Browser User', 10)
->assertSee('Inserted canned browser response')
->assertDontSee('<p>Hello');
->waitFor('@helpdesk-ticket-show', 10);
$this->openHelpdeskConversation($browser);
$browser->waitForText('Browser canned response', 10)
->assertSee('Browser canned response')
->assertDontSee('UNID')
->assertDontSee('GUID');
$comment = Comment::query()
->where('ticket_id', $ticket->id)
@@ -91,17 +97,24 @@ final class HelpdeskTicketBrowserTest extends DuskTestCase
->where('body', 'like', '%Hello Response Browser User%')
->firstOrFail();
$this->openHelpdeskConversation($browser);
$browser->press('@reply-to-comment-'.$comment->id)
->waitFor('@reply-body-'.$comment->id)
->type('@reply-body-'.$comment->id, 'Nested browser response')
->press('@post-reply-'.$comment->id)
->waitForText('Nested browser response', 10)
->assertSee('Nested browser response');
->waitFor('@helpdesk-ticket-show', 10);
$this->openHelpdeskConversation($browser);
$browser->waitForText('RE: Browser canned response', 10)
->assertSee('RE: Browser canned response');
});
$this->assertDatabaseHas('helpdesk_comments', [
'ticket_id' => $ticket->id,
'parent_id' => null,
'subject' => 'Browser canned response',
'body' => '<p>Hello Response Browser User</p><p>Inserted canned browser response for '.$ticket->reference.'</p>',
]);
@@ -114,10 +127,30 @@ final class HelpdeskTicketBrowserTest extends DuskTestCase
$this->assertDatabaseHas('helpdesk_comments', [
'ticket_id' => $ticket->id,
'parent_id' => $parentId,
'subject' => 'RE: Browser canned response',
'body' => 'Nested browser response',
]);
}
private function openHelpdeskConversation(Browser $browser): void
{
$browser->script(<<<JS
const conversation = document.querySelector('[data-helpdesk-conversation-section]');
if (conversation) {
conversation.open = true;
}
document.querySelectorAll('[data-helpdesk-comment-card]').forEach((card) => {
card.open = true;
});
const update = window.updateCommentToggleButtons;
if (typeof update === 'function') {
update();
}
JS);
$browser->pause(150);
}
private function setHelpdeskEditor(Browser $browser, string $dusk, string $html): void
{
$encodedDusk = json_encode($dusk, JSON_THROW_ON_ERROR);
@@ -74,6 +74,7 @@ final class TicketConversationTest extends TestCase
$this->actingAs($owner)
->post(route('helpdesk.tickets.comments.store', $ticket), [
'subject' => 'Searchable response subject',
'commentBody' => '<p><strong>Searchable response</strong></p>',
])
->assertRedirect(route('helpdesk.tickets.show', $ticket));
@@ -83,6 +84,7 @@ final class TicketConversationTest extends TestCase
self::assertNotEmpty($comment->guid);
self::assertNotEmpty($comment->unid);
self::assertSame($comment->unid, $comment->root_unid);
self::assertSame('Searchable response subject', $comment->subject);
self::assertSame('Searchable response', $comment->body_text);
self::assertSame(1, $comment->sync_sequence);
}
@@ -97,6 +99,7 @@ final class TicketConversationTest extends TestCase
$this->actingAs($owner)
->post(route('helpdesk.tickets.comments.store', $ticket), [
'parent_id' => $parent->id,
'subject' => 'RE: Parent response',
'commentBody' => '<p>Child response</p>',
])
->assertRedirect(route('helpdesk.tickets.show', $ticket));
@@ -105,6 +108,7 @@ final class TicketConversationTest extends TestCase
self::assertSame($parent->unid, $reply->parent_unid);
self::assertSame($parent->root_unid, $reply->root_unid);
self::assertSame('RE: Parent response', $reply->subject);
}
public function test_agent_can_update_status_to_closed_and_priority(): void