@codepunter-labs/mock-gcp-workflows
v0.2.0
Published
TODO
Readme
@codepunter-labs/mock-gcp-workflows
Mock SDK for Google Cloud Workflows API. Provides fully-typed mock implementations for testing Cloud Workflows integrations without making real API calls.
Installation
npm install @codepunter-labs/mock-gcp-workflowsFeatures
- Workflows: Deploy, describe, list, and delete workflows
- Executions: Execute, run, list, and describe workflow executions
- Type-safe: Full TypeScript support with accurate API types
- Test Framework Agnostic: Works with Jest, Vitest, and other spy-based frameworks
Repository
- GitHub: https://github.com/DERRICK-TORKORNOO/mock-sdks/tree/main/packages/mock-gcp-workflows
- Source Code: src/
- Tests: tests/
Usage
Basic Setup
import { vi } from 'vitest';
import { createMockGcpWorkflows } from '@codepunter-labs/mock-gcp-workflows';
const workflows = createMockGcpWorkflows({ spy: vi.fn });Using with Jest
import { createMockGcpWorkflows } from '@codepunter-labs/mock-gcp-workflows';
const workflows = createMockGcpWorkflows({ spy: jest.fn });Example: Deploy Workflow
// Default behavior - returns realistic mock data
const result = await workflows.deployWorkflow({
name: 'projects/test-project/locations/us-central1/workflows/my-workflow',
sourceContents: 'main:\n params: [args]\n steps:\n - call: log\n args: ["Hello, ${args}"]'
});Example: Execute Workflow
const result = await workflows.executeWorkflow(
'projects/test-project/locations/us-central1/workflows/my-workflow',
{ argument: '{"name": "World"}' }
);Example: Override Mock Response
import { makeWorkflowResponse } from '@codepunter-labs/mock-gcp-workflows';
workflows.deployWorkflow.mockResolvedValue(
makeWorkflowResponse({ name: 'custom-workflow' })
);Example: Error Simulation
import { MockErrors } from '@codepunter-labs/mock-core';
workflows.deployWorkflow.mockRejectedValue(
MockErrors.badRequest('Invalid workflow definition')
);API Reference
MockGcpWorkflows
deployWorkflow(request)- Deploy workflowdescribeWorkflow(name)- Get workflow detailslistWorkflows(parent)- List workflowsdeleteWorkflow(name)- Delete workflowexecuteWorkflow(parent, request)- Execute workflowrunWorkflow(parent, request)- Execute workflow and wait for completionlistExecutions(parent)- List executionsdescribeExecution(name)- Get execution details
Fixture Factories
makeWorkflowResponse(options?)- Create workflow responsemakeExecutionResponse(options?)- Create execution responsemakeExecuteWorkflowResponse(options?)- Create execute workflow response
Testing Patterns
Test Success Path
test('should deploy workflow successfully', async () => {
const workflows = createMockGcpWorkflows({ spy: vi.fn });
const result = await workflows.deployWorkflow(request);
expect(result.state).toBe('ACTIVE');
expect(result.name).toContain('workflows');
});Test Error Handling
test('should handle invalid workflow definition error', async () => {
const workflows = createMockGcpWorkflows({ spy: vi.fn });
workflows.deployWorkflow.mockRejectedValue(
GcpWorkflowsErrors.invalidWorkflowDefinition()
);
await expect(workflows.deployWorkflow(request)).rejects.toMatchObject({ message: /Invalid workflow definition/ });
});Test with Custom Data
test('should use custom workflow state', async () => {
const workflows = createMockGcpWorkflows({ spy: vi.fn });
workflows.deployWorkflow.mockResolvedValue(
makeWorkflowResponse({ state: 'UNAVAILABLE' })
);
const result = await workflows.deployWorkflow(request);
expect(result.state).toBe('UNAVAILABLE');
});License
MIT
