UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

246 lines (233 loc) 6.68 kB
/** * 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'); }); });