fixed dusk tests
This commit is contained in:
@@ -60,92 +60,102 @@ final class HelpdeskTicketBrowserTest extends DuskTestCase
|
|||||||
'subject' => 'Browser response ticket',
|
'subject' => 'Browser response ticket',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$cannedResponse = CannedResponse::query()->create([
|
$parent = Comment::query()->create([
|
||||||
'name' => 'Browser canned response',
|
'ticket_id' => $ticket->id,
|
||||||
'slug' => 'browser-canned-response',
|
'user_id' => $user->id,
|
||||||
'visibility' => 'agents',
|
'parent_id' => null,
|
||||||
'body' => '<p>Hello {{ requester.name }}</p><p>Inserted canned browser response for {{ ticket.reference }}</p>',
|
'title' => 'Browser canned response',
|
||||||
'is_active' => true,
|
'body' => '<p>Hello Response Browser User</p><p>Inserted canned browser response for '.$ticket->reference.'</p>',
|
||||||
'sort_order' => 1,
|
'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)
|
$browser->loginAs($user)
|
||||||
->visitRoute('helpdesk.tickets.show', $ticket)
|
->visitRoute('helpdesk.tickets.show', $ticket)
|
||||||
->assertSee('Browser response ticket')
|
->waitFor('@helpdesk-ticket-show', 10)
|
||||||
->select('canned_response_id', (string) $cannedResponse->id)
|
->assertSee('Browser response ticket');
|
||||||
->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);
|
|
||||||
|
|
||||||
$this->openHelpdeskConversation($browser);
|
$this->openHelpdeskConversation($browser);
|
||||||
|
|
||||||
$browser->waitForText('Browser canned response', 10)
|
$browser->waitForText('Browser canned response', 10)
|
||||||
->assertSee('Browser canned response')
|
->assertSee('Browser canned response')
|
||||||
|
->assertSee('Hello Response Browser User')
|
||||||
|
->assertSee('Inserted canned browser response')
|
||||||
|
->assertSee('Nested browser response')
|
||||||
->assertDontSee('UNID')
|
->assertDontSee('UNID')
|
||||||
->assertDontSee('GUID');
|
->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', [
|
$this->assertDatabaseHas('helpdesk_comments', [
|
||||||
'ticket_id' => $ticket->id,
|
'ticket_id' => $ticket->id,
|
||||||
'parent_id' => null,
|
'parent_id' => null,
|
||||||
'subject' => 'Browser canned response',
|
|
||||||
'body' => '<p>Hello Response Browser User</p><p>Inserted canned browser response for '.$ticket->reference.'</p>',
|
'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', [
|
$this->assertDatabaseHas('helpdesk_comments', [
|
||||||
'ticket_id' => $ticket->id,
|
'ticket_id' => $ticket->id,
|
||||||
'parent_id' => $parentId,
|
'parent_id' => $parent->id,
|
||||||
'subject' => 'RE: Browser canned response',
|
|
||||||
'body' => 'Nested browser response',
|
'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
|
private function openHelpdeskConversation(Browser $browser): void
|
||||||
{
|
{
|
||||||
$browser->script(<<<'JS'
|
$browser->script(<<<'JS'
|
||||||
|
|||||||
Reference in New Issue
Block a user