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

import { buildWalkerThemeRules } from '../../src/lib/client/epub/walker-theme';

test.describe('walker theme rules', () => {
  test('always includes foreground/background colors', () => {
    const rules = buildWalkerThemeRules({
      foreground: 'rgb(1, 2, 3)',
      base: 'rgb(9, 8, 7)',
    });

    expect(rules.body.color).toBe('rgb(1, 2, 3)');
    expect(rules.body['background-color']).toBe('rgb(9, 8, 7)');
  });

  test('includes typography metrics when provided', () => {
    const rules = buildWalkerThemeRules({
      foreground: '#111',
      base: '#fff',
      fontFamily: 'Georgia, serif',
      fontSize: '18px',
      lineHeight: '1.7',
      fontWeight: '400',
      letterSpacing: '0.01em',
      wordSpacing: '0.03em',
    });

    expect(rules.body['font-family']).toBe('Georgia, serif');
    expect(rules.body['font-size']).toBe('18px');
    expect(rules.body['line-height']).toBe('1.7');
    expect(rules.body['font-weight']).toBe('400');
    expect(rules.body['letter-spacing']).toBe('0.01em');
    expect(rules.body['word-spacing']).toBe('0.03em');
  });

  test('omits typography keys when missing', () => {
    const rules = buildWalkerThemeRules({
      foreground: '#111',
      base: '#fff',
      fontFamily: '',
      lineHeight: '',
    });

    expect('font-family' in rules.body).toBe(false);
    expect('line-height' in rules.body).toBe(false);
  });
});
