Skip to main content
Glama
task.responses.ts3.23 kB
import { faker } from "@faker-js/faker"; import { createTask, createTaskList, type TaskOverrides, } from "../factories/task.factory"; import type { FreshBooksResponse, TaskSingleData, TaskListData, Task, } from "../../../src/types/freshbooks"; import { createPaginationMeta } from "./time-entry.responses"; /** * Mock successful single Task response */ export function mockTaskSingleResponse( overrides: TaskOverrides = {} ): FreshBooksResponse<TaskSingleData> { return { ok: true, data: { task: createTask(overrides), }, }; } /** * Mock successful Task list response */ export function mockTaskListResponse( count: number = 10, page: number = 1, perPage: number = 30 ): FreshBooksResponse<TaskListData> { const total = count; const itemsOnPage = Math.min(perPage, Math.max(0, total - (page - 1) * perPage)); return { ok: true, data: { tasks: createTaskList(itemsOnPage), pages: createPaginationMeta(page, total, perPage), }, }; } /** * Mock empty Task list response */ export function mockTaskEmptyListResponse(): FreshBooksResponse<TaskListData> { return { ok: true, data: { tasks: [], pages: createPaginationMeta(1, 0, 30), }, }; } /** * Mock successful Task create response */ export function mockTaskCreateResponse( input: Partial<Task> ): FreshBooksResponse<TaskSingleData> { const now = new Date().toISOString(); return { ok: true, data: { task: createTask({ ...input, id: faker.number.int({ min: 1, max: 999999 }), updated: now, }), }, }; } /** * Mock successful Task update response */ export function mockTaskUpdateResponse( id: number, changes: Partial<Task> ): FreshBooksResponse<TaskSingleData> { return { ok: true, data: { task: createTask({ id, updated: new Date().toISOString(), ...changes, }), }, }; } /** * Mock successful Task delete response */ export function mockTaskDeleteResponse(): FreshBooksResponse<void> { return { ok: true, }; } /** * Mock first page of multi-page results */ export function mockTaskFirstPage( total: number = 100, perPage: number = 30 ): FreshBooksResponse<TaskListData> { return mockTaskListResponse(total, 1, perPage); } /** * Mock middle page of results */ export function mockTaskMiddlePage( page: number = 2, total: number = 100, perPage: number = 30 ): FreshBooksResponse<TaskListData> { return mockTaskListResponse(total, page, perPage); } /** * Mock last page of results */ export function mockTaskLastPage( total: number = 100, perPage: number = 30 ): FreshBooksResponse<TaskListData> { const lastPage = Math.ceil(total / perPage); return mockTaskListResponse(total, lastPage, perPage); } /** * Mock page beyond the last page */ export function mockTaskBeyondLastPage( total: number = 100, perPage: number = 30 ): FreshBooksResponse<TaskListData> { const beyondPage = Math.ceil(total / perPage) + 1; return { ok: true, data: { tasks: [], 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