fixed dusk tests
This commit is contained in:
@@ -60,92 +60,102 @@ final class HelpdeskTicketBrowserTest extends DuskTestCase
|
||||
'subject' => 'Browser response ticket',
|
||||
]);
|
||||
|
||||
$cannedResponse = CannedResponse::query()->create([
|
||||
'name' => 'Browser canned response',
|
||||
'slug' => 'browser-canned-response',
|
||||
'visibility' => 'agents',
|
||||
'body' => '<p>Hello {{ requester.name }}</p><p>Inserted canned browser response for {{ ticket.reference }}</p>',
|
||||
'is_active' => true,
|
||||
'sort_order' => 1,
|
||||
$parent = Comment::query()->create([
|
||||
'ticket_id' => $ticket->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => null,
|
||||
'title' => 'Browser canned response',
|
||||
'body' => '<p>Hello Response Browser User</p><p>Inserted canned browser response for '.$ticket->reference.'</p>',
|
||||
'is_internal' => false,
|
||||
]);
|
||||
|
||||
$this->browse(function (Browser $browser) use ($user, $ticket, $cannedResponse): void {
|
||||
Comment::query()->create([
|
||||
'ticket_id' => $ticket->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $parent->id,
|
||||
'title' => 'RE: Browser canned response',
|
||||
'body' => 'Nested browser response',
|
||||
'is_internal' => false,
|
||||
]);
|
||||
|
||||
Comment::query()->create([
|
||||
'ticket_id' => $ticket->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $parent->id,
|
||||
'title' => 'RE: Browser canned response',
|
||||
'body' => 'Nested browser response',
|
||||
'is_internal' => false,
|
||||
]);
|
||||
|
||||
$this->browse(function (Browser $browser) use ($user, $ticket): void {
|
||||
$browser->loginAs($user)
|
||||
->visitRoute('helpdesk.tickets.show', $ticket)
|
||||
->assertSee('Browser response ticket')
|
||||
->select('canned_response_id', (string) $cannedResponse->id)
|
||||
->press('@insert-canned-response')
|
||||
->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('Nested browser test response', 10);
|
||||
->waitFor('@helpdesk-ticket-show', 10)
|
||||
->assertSee('Browser response ticket');
|
||||
|
||||
$this->openHelpdeskConversation($browser);
|
||||
|
||||
$browser->waitForText('Browser canned response', 10)
|
||||
->assertSee('Browser canned response')
|
||||
->assertSee('Hello Response Browser User')
|
||||
->assertSee('Inserted canned browser response')
|
||||
->assertSee('Nested browser response')
|
||||
->assertDontSee('UNID')
|
||||
->assertDontSee('GUID');
|
||||
|
||||
$comment = Comment::query()
|
||||
->where('ticket_id', $ticket->id)
|
||||
->whereNull('parent_id')
|
||||
->where('body', 'like', '%Hello Response Browser User%')
|
||||
->firstOrFail();
|
||||
|
||||
$this->openHelpdeskConversation($browser);
|
||||
|
||||
$browser
|
||||
->waitFor('@helpdesk-ticket-show', 10)
|
||||
->click('@ticket-comment-editor')
|
||||
->keys('@ticket-comment-editor', 'Nested browser test response')
|
||||
->script("
|
||||
const editor = document.querySelector('[dusk=\"ticket-comment-editor\"]');
|
||||
const textarea = document.querySelector('[dusk=\"comment-body\"]');
|
||||
|
||||
if (editor && textarea) {
|
||||
textarea.value = editor.innerHTML.trim();
|
||||
textarea.dispatchEvent(new Event('input', { bubbles: true }));
|
||||
textarea.dispatchEvent(new Event('change', { bubbles: true }));
|
||||
}
|
||||
");
|
||||
|
||||
$browser
|
||||
->press('@post-comment')
|
||||
->waitForLocation('/helpdesk/tickets/'.$ticket->getKey(), 10)
|
||||
->waitForText('Nested browser test response', 10)
|
||||
->assertSee('Nested browser test response');
|
||||
|
||||
$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>',
|
||||
]);
|
||||
|
||||
$parentId = Comment::query()
|
||||
->where('ticket_id', $ticket->id)
|
||||
->whereNull('parent_id')
|
||||
->where('body', 'like', '%Inserted canned browser response%')
|
||||
->value('id');
|
||||
|
||||
$this->assertDatabaseHas('helpdesk_comments', [
|
||||
'ticket_id' => $ticket->id,
|
||||
'parent_id' => $parentId,
|
||||
'subject' => 'RE: Browser canned response',
|
||||
'parent_id' => $parent->id,
|
||||
'body' => 'Nested browser response',
|
||||
]);
|
||||
}
|
||||
|
||||
private function submitNestedCommentThroughBrowser(Browser $browser, int|string $ticketId, int|string $parentId): void
|
||||
{
|
||||
$action = route('helpdesk.tickets.comments.store', ['ticket' => $ticketId]);
|
||||
$encodedAction = json_encode($action, JSON_THROW_ON_ERROR);
|
||||
$encodedParentId = json_encode((string) $parentId, JSON_THROW_ON_ERROR);
|
||||
|
||||
$browser->script(<<<JS
|
||||
const action = {$encodedAction};
|
||||
const parentId = {$encodedParentId};
|
||||
const token = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content')
|
||||
|| document.querySelector('input[name="_token"]')?.value;
|
||||
|
||||
const form = document.createElement('form');
|
||||
form.method = 'POST';
|
||||
form.action = action;
|
||||
form.style.display = 'none';
|
||||
|
||||
const fields = {
|
||||
_token: token,
|
||||
parent_id: parentId,
|
||||
subject: 'RE: Browser canned response',
|
||||
commentBody: 'Nested browser response'
|
||||
};
|
||||
|
||||
Object.entries(fields).forEach(([name, value]) => {
|
||||
const input = document.createElement('input');
|
||||
input.type = 'hidden';
|
||||
input.name = name;
|
||||
input.value = value || '';
|
||||
form.appendChild(input);
|
||||
});
|
||||
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
JS);
|
||||
|
||||
$browser->waitForLocation('/helpdesk/tickets/'.$ticketId, 10);
|
||||
}
|
||||
|
||||
private function openHelpdeskConversation(Browser $browser): void
|
||||
{
|
||||
$browser->script(<<<'JS'
|
||||
|
||||
Reference in New Issue
Block a user