/**
 * Copyright IBM Corp. 2024, 2025
 */
import path from 'path';
import fs from 'fs';

jest.mock('@apic/studio-shared');

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

jest.mock('@apic/studio-shared', () => ({
  Component: {
    Build: 'Build',
  },

  LogComponent: () => {
    return () => {
      /* noop */
    };
  },

  isValidAsset: jest.fn().mockReturnValue(true),

  SchemaHandler: jest.fn().mockImplementation(() => ({
    getSchema: jest.fn().mockReturnValue(JSON.stringify({ type: 'object' })),
  })),

  Logger: {
    error: jest.fn(),
    warn: jest.fn(),
    info: jest.fn(),
  },

  toError: jest.fn((e) => (e instanceof Error ? e : new Error(String(e)))),

  ErrorResponse: jest.fn(),
  Metadata_Ref: jest.fn(),
  SpecObject: jest.fn(),
  YamlContent: jest.fn(),
  UpperCaseKinds: jest.fn(),
}));

jest.mock('@apic/studio-client-model', () => ({
  AssetModelKindConstants: {
    API: 'API',
  },
}));

import { ZipProcessor } from '../src/index.js';

describe('ZipProcessor', () => {
  it('should process and send the response for valid Asset', async () => {
    const zipFilePath = path.resolve(__dirname, './assets/gateway-asset.zip');
    const Buffer = fs.readFileSync(zipFilePath);
    const zipprocess = new ZipProcessor();
    const result = await zipprocess.extractGatewaysJson(Buffer);
    expect(result).not.toBe(undefined);
    expect(result).not.toBe(false);
  });
});
