import { describe, expect, it } from 'vitest'
import { MENU_KEY_RE, menusMigrationSql } from './schema.js'

describe('menusMigrationSql', () => {
  it('returns DDL for menus + menu_items with constraints and index', () => {
    const sql = menusMigrationSql().toLowerCase()
    expect(sql).toContain('create table')
    expect(sql).toContain('menus')
    expect(sql).toContain('menu_items')
    expect(sql).toMatch(/menus[\s\S]*\bkey\b[\s\S]*unique/)
    expect(sql).toMatch(/menu_items[\s\S]*menu_id[\s\S]*references[\s\S]*menus[\s\S]*on delete cascade/)
    expect(sql).toMatch(/menu_items[\s\S]*parent_id[\s\S]*references[\s\S]*menu_items[\s\S]*on delete cascade/)
    expect(sql).toMatch(/\(menu_id,\s*parent_id,\s*position\)/)
  })
})

describe('MENU_KEY_RE', () => {
  it('accepts slug keys and rejects invalid keys', () => {
    expect(MENU_KEY_RE.test('primary')).toBe(true)
    expect(MENU_KEY_RE.test('footer-nav')).toBe(true)
    expect(MENU_KEY_RE.test('Has Space')).toBe(false)
    expect(MENU_KEY_RE.test('UP')).toBe(false)
  })
})
