Skip to main content
Glama

SFCC Development MCP Server

by taurgis
code-versions-client.test.ts4.41 kB
/** * Tests for OCAPICodeVersionsClient * Tests code version management functionality */ import { OCAPICodeVersionsClient } from '../src/clients/ocapi/code-versions-client.js'; import { TokenManager } from '../src/clients/base/oauth-token.js'; import { OCAPIConfig } from '../src/types/types.js'; // Mock fetch globally global.fetch = jest.fn(); // Mock TokenManager jest.mock('../src/clients/base/oauth-token.js'); // Mock Logger jest.mock('../src/utils/logger.js', () => ({ Logger: { initialize: jest.fn(), getInstance: jest.fn(() => ({ methodEntry: jest.fn(), methodExit: jest.fn(), debug: jest.fn(), warn: jest.fn(), error: jest.fn(), timing: jest.fn(), log: jest.fn(), info: jest.fn(), })), getChildLogger: jest.fn(() => ({ methodEntry: jest.fn(), methodExit: jest.fn(), debug: jest.fn(), warn: jest.fn(), error: jest.fn(), timing: jest.fn(), log: jest.fn(), info: jest.fn(), })), }, })); // Mock BaseHttpClient jest.mock('../src/clients/base/http-client.js'); // Mock Validator jest.mock('../src/utils/validator.js'); describe('OCAPICodeVersionsClient', () => { let client: OCAPICodeVersionsClient; let mockTokenManager: jest.Mocked<TokenManager>; const mockConfig: OCAPIConfig = { hostname: 'test-instance.demandware.net', clientId: 'test-client-id', clientSecret: 'test-client-secret', version: 'v21_3', }; beforeEach(() => { jest.clearAllMocks(); // Setup TokenManager mock mockTokenManager = { getValidToken: jest.fn(), storeToken: jest.fn(), clearToken: jest.fn(), getTokenExpiration: jest.fn(), isTokenValid: jest.fn(), clearAllTokens: jest.fn(), } as any; (TokenManager.getInstance as jest.Mock).mockReturnValue(mockTokenManager); client = new OCAPICodeVersionsClient(mockConfig); }); describe('getCodeVersions', () => { it('should make GET request to /code_versions endpoint', async () => { const mockCodeVersions = { _v: '23.2', _type: 'code_version_result', count: 1, data: [ { _type: 'code_version', id: 'version1', active: true, cartridges: 'app_storefront_base', compatibility_mode: '23.2', activation_time: '2024-01-01T00:00:00Z', total_size: '1024 KB', }, ], total: 1, }; // Mock the get method from BaseHttpClient const mockGet = jest.fn().mockResolvedValue(mockCodeVersions); (client as any).get = mockGet; const result = await client.getCodeVersions(); expect(mockGet).toHaveBeenCalledWith('/code_versions'); expect(result).toBe(mockCodeVersions); }); }); describe('activateCodeVersion', () => { it('should make PATCH request to activate code version', async () => { const mockActivatedVersion = { _v: '23.2', _type: 'code_version', _resource_state: 'new-resource-state-12345', id: 'version2', active: true, cartridges: 'app_storefront_base', compatibility_mode: '23.2', activation_time: '2024-01-15T10:30:00Z', total_size: '1024 KB', }; // Mock the patch method from BaseHttpClient const mockPatch = jest.fn().mockResolvedValue(mockActivatedVersion); (client as any).patch = mockPatch; const codeVersionId = 'version2'; const result = await client.activateCodeVersion(codeVersionId); expect(mockPatch).toHaveBeenCalledWith('/code_versions/version2', { active: true, }); expect(result).toBe(mockActivatedVersion); }); it('should validate required parameters', async () => { // Import the actual validator to test parameter validation const { Validator } = await import('../src/utils/validator.js'); const mockValidateRequired = jest.fn(); (Validator as any).validateRequired = mockValidateRequired; const codeVersionId = 'version2'; // Mock the patch method const mockPatch = jest.fn().mockResolvedValue({}); (client as any).patch = mockPatch; await client.activateCodeVersion(codeVersionId); expect(mockValidateRequired).toHaveBeenCalledWith( { codeVersionId }, ['codeVersionId'], ); }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/taurgis/sfcc-dev-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server