import {
  findProcMapEntry,
  transformProcColumns,
  transformProcessStatus,
} from './proc.transformer';
import { assemblyTransformerFixtures } from '@test-fixtures/monitoring/assembly/scenario.fixture';

describe('proc transformer', () => {
  it('findProcMapEntry matches keywords ignoring whitespace', () => {
    const entry = findProcMapEntry(assemblyTransformerFixtures.procMapKeyword);
    expect(entry?.processName).toBe(
      assemblyTransformerFixtures.procMapExpectedProcessName,
    );
  });

  it('transformProcColumns parses PROC rows and groups by process', () => {
    const rows = assemblyTransformerFixtures.procColumnRows;

    const result = transformProcColumns(rows);

    expect(result.driveUnitAssembly).toHaveLength(
      assemblyTransformerFixtures.procColumnExpectedCount,
    );
    expect(result.driveUnitAssembly[0]).toEqual(
      expect.objectContaining(
        assemblyTransformerFixtures.procColumnExpectedItem,
      ),
    );
  });

  it('transformProcessStatus parses structured rows with status mapping', () => {
    const rows = assemblyTransformerFixtures.processStatusRows;

    const result = transformProcessStatus(rows);

    expect(result.driveUnitAssembly).toHaveLength(
      assemblyTransformerFixtures.processStatusExpectedCount,
    );
    expect(result.driveUnitAssembly[0]).toEqual(
      expect.objectContaining(
        assemblyTransformerFixtures.processStatusExpectedItem,
      ),
    );
  });
});
