@apistudio/apim-cli
Version:
CLI for API Management Products
108 lines (86 loc) • 3.63 kB
text/typescript
/**
* 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([]);
});
});