/**
 * Copyright IBM Corp. 2024, 2025
 */
import { ModelFactory } from '../../src/model-factories/model.factory.js';
import { LogWrapper } from '../../src/service/log-wrapper.js';
import { ZipTestModelTransformer } from '../../src/transformers/zip-models.transformer.js';
import path from 'path';
import { readFileSync } from 'fs';

jest.mock('../../src/service/log-wrapper.js');
jest.mock('@apic/studio-logger', () => ({
  LoggerConfig: {
    isLoggerEnabled: jest.fn(),
  },
}));

describe('TestTransformer.transform', () => {
  let transformer: ZipTestModelTransformer;

  beforeEach(() => {
    transformer = new ZipTestModelTransformer();
  });

  it('should process all files in the zip and call model factory methods', async () => {
    const zipFilePath = path.join(__dirname, '../assets/valid-asset.zip');
    const buffer = readFileSync(zipFilePath);
    const result = await transformer.transform(buffer);
    expect(result).toBeInstanceOf(ModelFactory);
    expect(result.getAllTests()).toHaveLength(1);
    expect(LogWrapper.logInfo).toHaveBeenCalledWith(
      '0003',
      'Starting file processing.',
    );
    expect(LogWrapper.logInfo).toHaveBeenCalledWith(
      '0003',
      'File processing completed.',
    );
  });
});
