Skip to main content
Glama
tasks.mock.ts3.27 kB
import type { PaginatedResult, Task } from "@lokalise/node-api"; import { generators } from "../fixture-helpers/generators.js"; export class TasksMockBuilder { public tasks: Task[] = []; private page = 1; private limit = 100; private totalResults?: number; withTask(overrides: Partial<Task> = {}): this { const timestamp = generators.timestamp(); const defaultTask: Task = { task_id: overrides.task_id ?? generators.task.id(), title: overrides.title ?? generators.task.title(), description: overrides.description ?? generators.task.description(), status: overrides.status ?? "in_progress", progress: overrides.progress ?? 0, due_date: overrides.due_date ?? "", due_date_timestamp: overrides.due_date_timestamp ?? 0, keys_count: overrides.keys_count ?? 10, words_count: overrides.words_count ?? 100, created_at: overrides.created_at ?? timestamp.formatted, created_at_timestamp: overrides.created_at_timestamp ?? timestamp.timestamp, created_by: overrides.created_by ?? generators.user.id(), created_by_email: overrides.created_by_email ?? generators.user.email(), can_be_parent: overrides.can_be_parent ?? false, task_type: overrides.task_type ?? "translation", parent_task_id: overrides.parent_task_id ?? 0, closing_tags: [], do_lock_translations: overrides.do_lock_translations ?? false, languages: overrides.languages ?? [], source_language_iso: overrides.source_language_iso ?? "en", auto_close_languages: overrides.auto_close_languages ?? true, auto_close_task: overrides.auto_close_task ?? true, auto_close_items: overrides.auto_close_items ?? true, completed_at: overrides.completed_at ?? "", completed_at_timestamp: overrides.completed_at_timestamp ?? 0, completed_by: overrides.completed_by ?? 0, completed_by_email: overrides.completed_by_email ?? "", custom_translation_status_ids: overrides.custom_translation_status_ids ?? [], }; this.tasks.push({ ...defaultTask, ...overrides }); return this; } withLanguageAssignments( _users: Array<{ user_id: number; email: string }>, _languages: Array<{ language_iso: string; language_id: number }>, ): this { if (this.tasks.length === 0) { this.withTask(); } const lastTask = this.tasks[this.tasks.length - 1]; // Simplified language assignments - type incompatibilities with SDK (lastTask as unknown as { languages: unknown[] }).languages = []; return this; } withPagination(page: number, limit: number): this { this.page = page; this.limit = limit; return this; } setTotalResults(total: number): this { this.totalResults = total; return this; } build(): PaginatedResult<Task> { const total = this.totalResults ?? this.tasks.length; const totalPages = Math.ceil(total / this.limit); return { items: this.tasks, totalResults: total, totalPages, resultsPerPage: this.limit, currentPage: this.page, responseTooBig: false, hasNextPage: () => this.page < totalPages, hasPrevPage: () => this.page > 1, isFirstPage: () => this.page === 1, isLastPage: () => this.page === totalPages, nextPage: () => (this.page < totalPages ? this.page + 1 : this.page), prevPage: () => (this.page > 1 ? this.page - 1 : this.page), }; } }

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/AbdallahAHO/lokalise-mcp'

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