Skip to main content
Glama
service.responses.ts3.13 kB
import { faker } from "@faker-js/faker"; import { createService, createServiceList, type ServiceOverrides, } from "../factories/service.factory"; import type { FreshBooksResponse, ServiceSingleData, ServiceListData, Service, } from "../../../src/types/freshbooks"; import { createPaginationMeta } from "./time-entry.responses"; /** * Mock successful single Service response */ export function mockServiceSingleResponse( overrides: ServiceOverrides = {} ): FreshBooksResponse<ServiceSingleData> { return { ok: true, data: { service: createService(overrides), }, }; } /** * Mock successful Service list response */ export function mockServiceListResponse( count: number = 10, page: number = 1, perPage: number = 30 ): FreshBooksResponse<ServiceListData> { const total = count; const itemsOnPage = Math.min(perPage, Math.max(0, total - (page - 1) * perPage)); return { ok: true, data: { services: createServiceList(itemsOnPage), pages: createPaginationMeta(page, total, perPage), }, }; } /** * Mock empty Service list response */ export function mockServiceEmptyListResponse(): FreshBooksResponse<ServiceListData> { return { ok: true, data: { services: [], pages: createPaginationMeta(1, 0, 30), }, }; } /** * Mock successful Service create response */ export function mockServiceCreateResponse( input: Partial<Service> ): FreshBooksResponse<ServiceSingleData> { return { ok: true, data: { service: createService({ ...input, id: faker.number.int({ min: 1, max: 999999 }), }), }, }; } /** * Mock successful Service delete response (actually sets visState=1) */ export function mockServiceDeleteResponse( id: number ): FreshBooksResponse<ServiceSingleData> { return { ok: true, data: { service: createService({ id, visState: 1, // 1 = deleted }), }, }; } /** * Mock first page of multi-page results */ export function mockServiceFirstPage( total: number = 100, perPage: number = 30 ): FreshBooksResponse<ServiceListData> { return mockServiceListResponse(total, 1, perPage); } /** * Mock middle page of results */ export function mockServiceMiddlePage( page: number = 2, total: number = 100, perPage: number = 30 ): FreshBooksResponse<ServiceListData> { return mockServiceListResponse(total, page, perPage); } /** * Mock last page of results */ export function mockServiceLastPage( total: number = 100, perPage: number = 30 ): FreshBooksResponse<ServiceListData> { const lastPage = Math.ceil(total / perPage); return mockServiceListResponse(total, lastPage, perPage); } /** * Mock page beyond the last page */ export function mockServiceBeyondLastPage( total: number = 100, perPage: number = 30 ): FreshBooksResponse<ServiceListData> { const beyondPage = Math.ceil(total / perPage) + 1; return { ok: true, data: { services: [], pages: { page: beyondPage, pages: Math.ceil(total / perPage), total, perPage, }, }, }; }

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