import { test, expect } from '@playwright/test'

async function createTestChild(request: any, name: string, age = 8): Promise<string> {
  await request.put('/api/child/add', { data: { name, age } })
  const listRes = await request.get('/api/child/list')
  const data = await listRes.json()
  const child = (data.children ?? []).find((c: any) => c.name === name)
  return child?.id ?? ''
}

test.describe('Child kebab menu – Delete Points', () => {
  const CHILD_NAME = 'KebabPoints'
  let childId = ''

  test.beforeEach(async ({ request }) => {
    childId = await createTestChild(request, CHILD_NAME)
    await request.put(`/api/child/${childId}/edit`, { data: { points: 50 } })
  })

  test.afterEach(async ({ request }) => {
    if (childId) await request.delete(`/api/child/${childId}`)
    childId = ''
  })

  test('Delete Points resets child points to 0', async ({ page }) => {
    await page.goto('/parent')

    const card = page.locator('.card').filter({ hasText: CHILD_NAME })

    await card.getByRole('button', { name: 'Options' }).click()
    await expect(card.getByRole('button', { name: 'Options' })).toHaveAttribute(
      'aria-expanded',
      'true',
    )

    await card.getByRole('button', { name: 'Delete Points' }).click()

    await expect(card.getByText('Points: 0')).toBeVisible()
  })
})
