/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
/* eslint-disable @typescript-eslint/no-explicit-any */
import { getRefsFromPackageAsset } from './package-kind-helper.js';
import { BaseAsset } from '../../../model/assets-model.js';

jest.mock('../../common/message-helper.js', () => ({
	showWarning: jest.fn(),
}));

describe('getRefsFromPackageAsset', () => {
	beforeEach(() => {
		jest.clearAllMocks();
	});

	it('should return AssetCacheModel with apis and plans ref', () => {
		const packageAsset: BaseAsset = {
			spec: {
				'apis': [{ $ref: 'dev:API:1.0' }, { $ref: 'dev:API:2.0' }],
				'plans': [{ $ref: 'dev:Plan:1.0' }]
			},
		} as unknown as BaseAsset;

		const result = getRefsFromPackageAsset(packageAsset);
		expect(result).toEqual([                                                                                                                                                                                            
			{ kind: 'API', ref: 'dev:API:1.0', isNewlyAdded: true },
			{ kind: 'API', ref: 'dev:API:2.0', isNewlyAdded: true },
			{ kind: 'Plan', ref: 'dev:Plan:1.0', isNewlyAdded: true }
		  ]);
	});

	it('should handle package asset with missing spec properties', () => {
		const routeAsset: BaseAsset = {
			spec: {},
		} as unknown as BaseAsset;

		const result = getRefsFromPackageAsset(routeAsset);

		expect(result).toEqual([]);
	});


  it('should return empty array when packageAsset exists but lacks a $ref', () => {
    const packageAsset: BaseAsset = {
      spec: {
        "apis": [],
        "plans": []
      },
    } as unknown as BaseAsset;

    const result = getRefsFromPackageAsset(packageAsset);

    expect(result).toEqual([]);
  });

});
