import { test } from 'node:test';
import assert from 'node:assert';
import { readFileSync } from 'node:fs';
import { join } from 'node:path';

const root = process.cwd();

test('/ and @ menus share command menu selection colors', () => {
  const css = readFileSync(join(root, 'src/styles/app.css'), 'utf8');
  const theme = readFileSync(join(root, 'src/styles/theme.css'), 'utf8');

  assert.match(theme, /--app-command-menu-hover-background:/);
  assert.match(theme, /--app-command-menu-active-background:/);
  assert.match(theme, /--app-command-menu-active-background:color-mix\(in srgb,var\(--app-brand\)/);
  assert.match(theme, /--app-command-menu-active-accent:/);
  assert.match(css, /\.slash-row\.active\s*\{\s*background:\s*var\(--app-command-menu-active-background\)/);
  assert.match(css, /\.at-row\.active\s*\{\s*background:\s*var\(--app-command-menu-active-background\)/);
  assert.match(css, /\.slash-row\.active\s*\{[^}]*--app-command-menu-active-accent/s);
  assert.match(css, /\.at-row\.active\s*\{[^}]*--app-command-menu-active-accent/s);
  assert.match(css, /\.slash-row:hover\s*\{\s*background:\s*var\(--app-command-menu-hover-background\)/);
  assert.match(css, /\.at-row:hover\s*\{\s*background:\s*var\(--app-command-menu-hover-background\)/);
});

test('approval modes use canonical order and label bypass wire mode as Auto', () => {
  const selector = readFileSync(join(root, 'src/components/ModeSelector.tsx'), 'utf8');
  const messages = readFileSync(join(root, 'src/i18n.ts'), 'utf8');
  const build = selector.indexOf("val: 'build'");
  const acceptEdits = selector.indexOf("val: 'accept_edits'");
  const auto = selector.indexOf("val: 'bypass', label: 'mode.auto'");
  const plan = selector.indexOf("val: 'plan'");

  assert.ok(build >= 0);
  assert.ok(build < acceptEdits);
  assert.ok(acceptEdits < auto);
  assert.ok(auto < plan);
  assert.doesNotMatch(selector, /label:\s*'mode\.bypass'/);
  assert.match(messages, /'mode\.auto':\s*'Auto'/);
  assert.doesNotMatch(messages, /'mode\.bypass':/);
});