UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

108 lines (86 loc) 3.63 kB
/** * Copyright Super iPaaS Integration LLC, an IBM Company 2024 */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { getRefsFromPlanAsset } from './plan-kind-helper.js'; import { BaseAsset } from '../../../model/assets-model.js'; jest.mock('../../common/message-helper.js', () => ({ showWarning: jest.fn(), })); describe('getRefsFromPlanAsset', () => { beforeEach(() => { jest.clearAllMocks(); }); it('should return AssetCacheModel with rateLimit ref', () => { const packageAsset: BaseAsset = { spec: { qos : { 'withRateLimit': [{ $ref: 'dev:RequestLimit:1.0' }, { $ref: 'dev:RequestLimit:2.0' }], } }, } as unknown as BaseAsset; const result = getRefsFromPlanAsset(packageAsset); expect(result).toEqual([ { kind: 'RequestLimit', ref: 'dev:RequestLimit:1.0', isNewlyAdded: true }, { kind: 'RequestLimit', ref: 'dev:RequestLimit:2.0', isNewlyAdded: true }, ]); }); it('should return AssetCacheModel with rateLimit ref', () => { const packageAsset: BaseAsset = { spec: { qos : { 'withQuota': { $ref: 'dev:RequestLimit:1.0' } } }, } as unknown as BaseAsset; const result = getRefsFromPlanAsset(packageAsset); expect(result).toEqual([ { kind: 'RequestLimit', ref: 'dev:RequestLimit:1.0', isNewlyAdded: true } ]); }); it('should return AssetCacheModel with rateLimit ref', () => { const packageAsset: BaseAsset = { spec: { qos : { 'withQuota': { $ref: 'dev:RequestLimit:1.0' } } }, } as unknown as BaseAsset; const result = getRefsFromPlanAsset(packageAsset); expect(result).toEqual([ { kind: 'RequestLimit', ref: 'dev:RequestLimit:1.0', isNewlyAdded: true } ]); }); it('should return AssetCacheModel with rateLimit and withQuota ref', () => { const packageAsset: BaseAsset = { spec: { qos : { 'withRateLimit': [{ $ref: 'dev:RequestLimit:1.0' }, { $ref: 'dev:RequestLimit:2.0' }], 'withQuota': { $ref: 'dev:RequestLimit:3.0' } } }, } as unknown as BaseAsset; const result = getRefsFromPlanAsset(packageAsset); expect(result).toEqual([ { kind: 'RequestLimit', ref: 'dev:RequestLimit:1.0', isNewlyAdded: true }, { kind: 'RequestLimit', ref: 'dev:RequestLimit:2.0', isNewlyAdded: true }, { kind: 'RequestLimit', ref: 'dev:RequestLimit:3.0', isNewlyAdded: true } ]); }); it('should handle package asset with missing spec properties', () => { const planAsset: BaseAsset = { spec: {}, } as unknown as BaseAsset; const result = getRefsFromPlanAsset(planAsset); expect(result).toEqual([]); }); it('should return empty array when packageAsset exists but lacks a $ref', () => { const packageAsset: BaseAsset = { spec: { qos : {} }, } as unknown as BaseAsset; const result = getRefsFromPlanAsset(packageAsset); expect(result).toEqual([]); }); });