From a0566007dab0c5252adc21d886ad0da858f591f7 Mon Sep 17 00:00:00 2001
From: Manuel Bustillo <bustikiller@bustikiller.com>
Date: Thu, 14 Nov 2024 00:24:07 +0100
Subject: [PATCH] Include playwright test for changing guest name

---
 tests/guests.spec.ts | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/tests/guests.spec.ts b/tests/guests.spec.ts
index 26c92b6..b956141 100644
--- a/tests/guests.spec.ts
+++ b/tests/guests.spec.ts
@@ -1,7 +1,7 @@
-import { test, expect } from '@playwright/test'
+import { test, expect, Page } from '@playwright/test'
 
-test('should display the list of guests', async ({ page }) => {
-  await page.route('*/**/api/guests.json', async route => {
+const mockGuestsAPI = ({page}:{page: Page}) => {
+  page.route('*/**/api/guests.json', async route => {
     const json = {
       data: [
         {
@@ -31,8 +31,12 @@ test('should display the list of guests', async ({ page }) => {
 
     await route.fulfill({json})
   })
+}
 
-  await page.goto('/dashboard/guests')
+test('should display the list of guests', async ({ page }) => {
+  await mockGuestsAPI({page});
+
+  await page.goto('/dashboard/guests');
 
   await expect(page.getByRole('tab', { name: 'Groups' })).toBeVisible();
   await expect(page.getByRole('tab', { name: 'Guests' })).toBeVisible();
@@ -52,4 +56,19 @@ test('should display the list of guests', async ({ page }) => {
   await expect(page.getByRole('row').nth(2).getByRole('button', {name: 'Confirm'})).toBeVisible();
   await expect(page.getByRole('row').nth(2).getByRole('button', {name: 'Tentative'})).toBeVisible();
   await expect(page.getByRole('row').nth(2).getByRole('button', {name: 'Decline'})).toBeVisible();
-})
\ No newline at end of file
+});
+
+test('should allow changing the name of a guest', async ({page}) => {
+  await mockGuestsAPI({page});
+
+  await page.goto('/dashboard/guests');
+
+  await expect(page.getByRole('row').nth(1).getByRole('cell', {name: 'Kristofer Rohan DVM'})).toBeVisible();
+
+  await page.getByRole('row').nth(1).getByRole('cell', {name: 'Kristofer Rohan DVM'}).click();
+  await page.getByRole('textbox').clear();
+  await page.getByRole('textbox').pressSequentially('John Snow');
+  await page.getByRole('textbox').evaluate(e => e.blur());
+
+  await expect(page.getByRole('row').nth(1).getByRole('cell', {name: 'John Snow'})).toBeVisible();
+});
\ No newline at end of file