@apistudio/apim-cli
Version:
CLI for API Management Products
246 lines (233 loc) • 6.68 kB
JavaScript
/**
* Copyright IBM Corp. 2024, 2025
*/
describe('APICProject', () => {
it('should create an APICProject object with required properties', () => {
const project = {
isLoading: false,
name: 'Test Project',
description: 'Test Description',
lastUpdated: 1723541000000,
tags: ['tag1', 'tag2'],
orgId: 'org123',
rootDirectoryAlias: 'test-alias',
assets: {
apis: [],
api_spec: [],
policies: [],
globalPolicies: [],
scopedPolicies: [],
policySequences: [],
tests: [],
environment: [],
assertions: [],
mockResponses: [],
mockEndpoints: [],
otherFiles: [],
packages: [],
product: [],
plans: [],
requestLimits: [],
mcpTools: [],
mcpServer: [],
quota: [],
},
isPinned: false,
isVCSProject: false,
projectMode: 'apic',
};
expect(project.isLoading).toBe(false);
expect(project.name).toBe('Test Project');
expect(project.description).toBe('Test Description');
expect(project.lastUpdated).toBe(1723541000000);
expect(project.tags).toEqual(['tag1', 'tag2']);
expect(project.orgId).toBe('org123');
expect(project.rootDirectoryAlias).toBe('test-alias');
expect(project.assets).toBeDefined();
expect(project.isPinned).toBe(false);
expect(project.isVCSProject).toBe(false);
expect(project.projectMode).toBe('apic');
});
it('should validate APICProject properties', () => {
const project = {
isLoading: true,
name: 'Test Project',
description: 'Test Description',
lastUpdated: 1723541000000,
tags: ['tag1', 'tag2'],
orgId: 'org123',
rootDirectoryAlias: 'test-alias',
assets: {
apis: [],
api_spec: [],
policies: [],
globalPolicies: [],
scopedPolicies: [],
policySequences: [],
tests: [],
environment: [],
assertions: [],
mockResponses: [],
mockEndpoints: [],
otherFiles: [],
packages: [],
product: [],
plans: [],
requestLimits: [],
mcpTools: [],
mcpServer: [],
quota: [],
},
isPinned: false,
isVCSProject: false,
projectMode: 'apic',
};
// Check that all required properties exist
expect(project).toHaveProperty('isLoading');
expect(project).toHaveProperty('name');
expect(project).toHaveProperty('description');
expect(project).toHaveProperty('lastUpdated');
expect(project).toHaveProperty('tags');
expect(project).toHaveProperty('orgId');
expect(project).toHaveProperty('rootDirectoryAlias');
expect(project).toHaveProperty('assets');
expect(project).toHaveProperty('isPinned');
expect(project).toHaveProperty('isVCSProject');
expect(project).toHaveProperty('projectMode');
// Check property types
expect(typeof project.isLoading).toBe('boolean');
expect(typeof project.name).toBe('string');
expect(typeof project.description).toBe('string');
expect(typeof project.lastUpdated).toBe('number');
expect(Array.isArray(project.tags)).toBe(true);
expect(typeof project.orgId).toBe('string');
expect(typeof project.rootDirectoryAlias).toBe('string');
expect(typeof project.assets).toBe('object');
expect(typeof project.isPinned).toBe('boolean');
expect(typeof project.isVCSProject).toBe('boolean');
expect(typeof project.projectMode).toBe('string');
});
});
describe('ProjectMode', () => {
it('should define all project modes', () => {
// Define the enum directly in the test
const ProjectMode = {
Local: 'local',
VCS: 'vcs',
APIC: 'apic',
};
expect(ProjectMode.Local).toBe('local');
expect(ProjectMode.VCS).toBe('vcs');
expect(ProjectMode.APIC).toBe('apic');
});
it('should use valid project modes in APICProject', () => {
// Define the enum directly in the test
const ProjectMode = {
Local: 'local',
VCS: 'vcs',
APIC: 'apic',
};
const localProject = {
isLoading: false,
name: 'Local Project',
description: 'Local Project Description',
lastUpdated: 1723541000000,
tags: [],
orgId: 'org123',
rootDirectoryAlias: 'local-alias',
assets: {
apis: [],
api_spec: [],
policies: [],
globalPolicies: [],
scopedPolicies: [],
policySequences: [],
tests: [],
environment: [],
assertions: [],
mockResponses: [],
mockEndpoints: [],
otherFiles: [],
packages: [],
product: [],
plans: [],
requestLimits: [],
mcpTools: [],
mcpServer: [],
quota: [],
},
isPinned: false,
isVCSProject: false,
projectMode: ProjectMode.Local,
};
const vcsProject = {
isLoading: false,
name: 'VCS Project',
description: 'VCS Project Description',
lastUpdated: 1723541000000,
tags: [],
orgId: 'org123',
rootDirectoryAlias: 'vcs-alias',
assets: {
apis: [],
api_spec: [],
policies: [],
globalPolicies: [],
scopedPolicies: [],
policySequences: [],
tests: [],
environment: [],
assertions: [],
mockResponses: [],
mockEndpoints: [],
otherFiles: [],
packages: [],
product: [],
plans: [],
requestLimits: [],
mcpTools: [],
mcpServer: [],
quota: [],
},
isPinned: false,
isVCSProject: true,
projectMode: ProjectMode.VCS,
};
const apicProject = {
isLoading: false,
name: 'APIC Project',
description: 'APIC Project Description',
lastUpdated: 1723541000000,
tags: [],
orgId: 'org123',
rootDirectoryAlias: 'apic-alias',
assets: {
apis: [],
api_spec: [],
policies: [],
globalPolicies: [],
scopedPolicies: [],
policySequences: [],
tests: [],
environment: [],
assertions: [],
mockResponses: [],
mockEndpoints: [],
otherFiles: [],
packages: [],
product: [],
plans: [],
requestLimits: [],
mcpTools: [],
mcpServer: [],
quota: [],
},
isPinned: false,
isVCSProject: false,
projectMode: ProjectMode.APIC,
};
expect(localProject.projectMode).toBe('local');
expect(vcsProject.projectMode).toBe('vcs');
expect(apicProject.projectMode).toBe('apic');
});
});