Skip to main content
Glama
expense.ts3.43 kB
/** * Mock Expense Responses * * Factory functions for creating mock FreshBooks API responses for expenses. */ /** * Create a mock expense object */ export function createMockExpense(overrides: Partial<any> = {}): any { return { id: 12345, accountId: 'ABC123', amount: { amount: '150.00', code: 'USD', }, date: '2024-01-15T00:00:00Z', categoryId: 5678, staffId: 1, vendor: 'Office Depot', notes: 'Office supplies for Q1', clientId: null, projectId: null, markupPercent: 0, taxName1: null, taxPercent1: null, taxName2: null, taxPercent2: null, taxAmount1: null, taxAmount2: null, isDuplicate: false, profileId: null, invoiceId: null, visState: 0, status: 'outstanding', bankName: null, updated: '2024-01-15T10:00:00Z', hasReceipt: false, backgroundJobId: null, extSystemId: null, ...overrides, }; } /** * Create a mock list response for expenses */ export function mockExpenseListResponse( count: number = 10, page: number = 1, perPage: number = 30 ): any { const expenses = Array.from({ length: count }, (_, i) => createMockExpense({ id: 10000 + i, categoryId: 5000 + (i % 5), vendor: `Vendor ${i + 1}`, amount: { amount: String((i + 1) * 50) + '.00', code: 'USD', }, }) ); return { ok: true, data: { expenses, pages: { page, pages: Math.ceil(count / perPage), perPage, per_page: perPage, total: count, }, }, }; } /** * Create an empty list response */ export function mockExpenseEmptyListResponse(): any { return { ok: true, data: { expenses: [], pages: { page: 1, pages: 0, perPage: 30, per_page: 30, total: 0, }, }, }; } /** * Create a mock single expense response */ export function mockExpenseSingleResponse(overrides: Partial<any> = {}): any { return { ok: true, data: { expense: createMockExpense(overrides), }, }; } /** * Create a mock create expense response */ export function mockExpenseCreateResponse(input: Partial<any> = {}): any { return { ok: true, data: { expense: createMockExpense({ id: 99999, updated: new Date().toISOString(), ...input, }), }, }; } /** * Create a mock update expense response */ export function mockExpenseUpdateResponse(expenseId: number, updates: Partial<any> = {}): any { return { ok: true, data: { expense: createMockExpense({ id: expenseId, updated: new Date().toISOString(), ...updates, }), }, }; } /** * Create a mock delete expense response */ export function mockExpenseDeleteResponse(): any { return { ok: true, data: {}, }; } /** * Create a mock not found error */ export function mockExpenseNotFoundError(expenseId: number): any { return { ok: false, error: { code: 'NOT_FOUND', message: `Expense with id ${expenseId} was not found`, statusCode: 404, }, }; } /** * Create a mock validation error */ export function mockExpenseValidationError(field: string, message: string): any { return { ok: false, error: { code: 'VALIDATION_ERROR', message: `${field}: ${message}`, statusCode: 400, }, }; }

Latest Blog Posts

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/Good-Samaritan-Software-LLC/freshbooks-mcp'

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