/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import {addErrorToResponse,errorsArray,constructErrorResponse} from '../../src/helpers/helper.js';

jest.mock('../../src/service/log-wrapper.ts');

describe('addErrorToResponse', () => {
	beforeEach(() => {
		// Clear errorsArray before each test
		errorsArray.length = 0;
	});

	test('should add error object to errorsArray', () => {
		addErrorToResponse('ERR001', 'field1', 'Error description 1');
		expect(errorsArray).toHaveLength(1);
		expect(errorsArray[0]).toEqual({
			code: 'ERR001',
			field: 'field1',
			description: 'Error description 1'
		});
	});

	test('should add multiple error objects to errorsArray', () => {
		addErrorToResponse('ERR001', 'field1', 'Error description 1');
		addErrorToResponse('ERR002', 'field2', 'Error description 2');
		expect(errorsArray).toHaveLength(2);
		expect(errorsArray[0]).toEqual({
			code: 'ERR001',
			field: 'field1',
			description: 'Error description 1'
		});
		expect(errorsArray[1]).toEqual({
			code: 'ERR002',
			field: 'field2',
			description: 'Error description 2'
		});
	});
});
describe('constructErrorResponse', () => {
	beforeEach(() => {
		// Clear errorsArray before each test
		errorsArray.length = 0;
	});

	test('should construct error response object with correct properties', () => {
		addErrorToResponse('ERR001', 'field1', 'Error description 1');
		addErrorToResponse('ERR002', 'field2', 'Error description 2');

		const response = constructErrorResponse();

		expect(response.respCode).toBe(400);
		expect(response.message).toBe('Invalid Assets or Reference in the Zip');
		expect(response.Endpoints).toEqual([]);
		expect(response.errors).toHaveLength(2);
		expect(response.errors[0]).toEqual({
			code: 'ERR001',
			field: 'field1',
			description: 'Error description 1'
		});
		expect(response.errors[1]).toEqual({
			code: 'ERR002',
			field: 'field2',
			description: 'Error description 2'
		});
	});

	test('should clear errorsArray after constructing error response', () => {
		addErrorToResponse('ERR001', 'field1', 'Error description 1');

		constructErrorResponse();

		expect(errorsArray).toHaveLength(0);
	});
});