import { readFileSync } from 'fs';
import { join } from 'path';

describe('UI Features Tests', () => {
  it('should have color hex input in admin form', () => {
    const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
    const adminContent = readFileSync(adminDashboardPath, 'utf-8');
    
    // Check for color input
    expect(adminContent).toContain('type="color"');
    expect(adminContent).toContain('boja_hex');
    expect(adminContent).toContain('Hex kod boje');
  });

  it('should display color hex in frontend table', () => {
    const filamentTablePath = join(process.cwd(), 'src', 'components', 'FilamentTableV2.tsx');
    const tableContent = readFileSync(filamentTablePath, 'utf-8');
    
    // Check for color display
    expect(tableContent).toContain('backgroundColor: filament.boja_hex');
    expect(tableContent).toContain('boja_hex');
  });

  it('should have number inputs for quantity fields', () => {
    const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
    const adminContent = readFileSync(adminDashboardPath, 'utf-8');
    
    // Check for number inputs for quantities
    expect(adminContent).toMatch(/type="number"[\s\S]*?name="refill"/);
    expect(adminContent).toMatch(/type="number"[\s\S]*?name="spulna"/);
    expect(adminContent).toContain('Refil');
    expect(adminContent).toContain('Špulna');
    expect(adminContent).toContain('Ukupna količina');
  });

  it('should have number input for quantity', () => {
    const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
    const adminContent = readFileSync(adminDashboardPath, 'utf-8');
    
    // Check for number input
    expect(adminContent).toMatch(/type="number"[\s\S]*?name="kolicina"/);
    expect(adminContent).toContain('min="0"');
    expect(adminContent).toContain('step="1"');
  });

  it('should have predefined material options', () => {
    const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
    const adminContent = readFileSync(adminDashboardPath, 'utf-8');

    // Check for material select dropdown (now generated from catalog)
    expect(adminContent).toContain('getMaterialOptions()');
    expect(adminContent).toContain('Izaberi tip');
  });

  it('should have admin sidebar and header', () => {
    const adminDashboardPath = join(process.cwd(), 'app', 'dashboard', 'page.tsx');
    const dashboardContent = readFileSync(adminDashboardPath, 'utf-8');

    // Check for admin sidebar and header
    expect(dashboardContent).toContain('AdminSidebar');
    expect(dashboardContent).toContain('Odjava');
  });

  it('should have Safari-specific select styling', () => {
    const selectCssPath = join(process.cwd(), 'src', 'styles', 'select.css');
    const selectContent = readFileSync(selectCssPath, 'utf-8');
    
    // Check for Safari fixes
    expect(selectContent).toContain('-webkit-appearance: none !important');
    expect(selectContent).toContain('@supports (-webkit-appearance: none)');
    expect(selectContent).toContain('-webkit-min-device-pixel-ratio');
  });
});