/**
 * @fileoverview Tests for OrdoJS Compiler
 */

import { describe, expect, it } from 'vitest';
import { OrdoJSCompiler } from './index.js';

describe('OrdoJSCompiler', () => {
  it('should compile a simple component', () => {
    const compiler = new OrdoJSCompiler({
      target: 'es2022',
      optimize: false,
      sourceMaps: false,
      minify: false
    });

    const source = `
      component SimpleComponent {
        markup {
          <div>Hello, World!</div>
        }
      }
    `;

    const result = compiler.compile(source);

    // Verify compilation was successful
    expect(result.success).toBe(true);
    expect(result.errors).toHaveLength(0);

    // Verify the output contains expected elements
    expect(result.output).toContain('function SimpleComponent(props = {})');
    expect(result.output).toContain('document.createElement("div")');
    expect(result.output).toContain('Hello, World!');
  });

  it('should handle compilation errors gracefully', () => {
    const compiler = new OrdoJSCompiler({
      target: 'es2022',
      optimize: false,
      sourceMaps: false,
      minify: false
    });

    // Invalid component (missing closing brace)
    const source = `
      component InvalidComponent {
        markup {
          <div>Missing closing brace</div>

      }
    `;

    const result = compiler.compile(source);

    // Verify compilation failed
    expect(result.success).toBe(false);
    expect(result.errors.length).toBeGreaterThan(0);
  });
});
