UNPKG

@lokalise/node-api

Version:
214 lines (178 loc) 6.26 kB
import type { ListTranslationParams } from "../../src/main.js"; import { describe, expect, it, LokaliseApi, Stub } from "../setup.js"; describe("Translations", () => { const lokaliseApi = new LokaliseApi({ apiKey: process.env.API_KEY }); const projectId = "803826145ba90b42d5d860.46800099"; const translationId = 304581208; it("lists", async () => { const stub = new Stub({ fixture: "translations/list.json", uri: `projects/${projectId}/translations`, respHeaders: { "x-pagination-total-count": "2", "x-pagination-page": "1", "x-pagination-limit": "500", "x-pagination-page-count": "1", }, }); await stub.setStub(); const translations = await lokaliseApi.translations().list({ project_id: projectId, }); expect(translations.items[0].translation_id).to.eq(translationId); expect(translations.nextCursor).to.be.null; expect(translations.hasNextCursor()).to.be.false; expect(translations.responseTooBig).to.be.false; }); it("lists with response too big header", async () => { const stub = new Stub({ fixture: "translations/list.json", uri: `projects/${projectId}/translations`, respHeaders: { "x-pagination-total-count": "2", "x-pagination-page": "1", "x-pagination-limit": "500", "x-pagination-page-count": "1", "x-response-too-big": "", }, }); await stub.setStub(); const translations = await lokaliseApi.translations().list({ project_id: projectId, }); expect(translations.items[0].translation_id).to.eq(translationId); expect(translations.nextCursor).to.be.null; expect(translations.hasNextCursor()).to.be.false; expect(translations.responseTooBig).to.be.true; }); it("lists and paginates", async () => { const params = { page: 2, limit: 2, filter_is_reviewed: 0, }; const stub = new Stub({ fixture: "translations/list_pagination.json", uri: `projects/${projectId}/translations`, query: params, respHeaders: { "x-pagination-total-count": "4", "x-pagination-page": "2", "x-pagination-limit": "2", "x-pagination-page-count": "2", }, }); await stub.setStub(); const translations = await lokaliseApi.translations().list({ project_id: projectId, ...params, }); expect(translations.items[0].translation_id).to.eq(304581213); expect(translations.totalResults).to.eq(4); expect(translations.totalPages).to.eq(2); expect(translations.resultsPerPage).to.eq(2); expect(translations.currentPage).to.eq(2); expect(translations.nextCursor).to.be.null; expect(translations.hasNextCursor()).to.be.false; }); it("lists and paginates by cursor", async () => { const params: ListTranslationParams = { project_id: projectId, pagination: "cursor", }; const { project_id, ...stubParams } = params; const stub = new Stub({ fixture: "translations/list_cursor_pagination.json", uri: `projects/${projectId}/translations`, query: stubParams, respHeaders: { "x-pagination-limit": "100", "x-pagination-next-cursor": "eyIxIjo1MjcyNjU2MTF9", }, }); await stub.setStub(); const translations = await lokaliseApi.translations().list({ ...params, }); expect(projectId).toEqual(project_id); expect(translations.items[0].translation_id).to.eq(304581213); expect(translations.totalResults).to.eq(0); expect(translations.totalPages).to.eq(0); expect(translations.resultsPerPage).to.eq(100); expect(translations.currentPage).to.eq(0); expect(translations.nextCursor).to.eq("eyIxIjo1MjcyNjU2MTF9"); expect(translations.hasNextCursor()).to.be.true; }); it("lists and paginates by cursor with next cursor set", async () => { const params: ListTranslationParams = { project_id: projectId, pagination: "cursor", cursor: "eyIxIjo1MjcyNjU2MTF9", limit: 2, }; const { project_id, ...stubParams } = params; const stub = new Stub({ fixture: "translations/list_cursor_pagination.json", uri: `projects/${projectId}/translations`, query: stubParams, respHeaders: { "x-pagination-limit": "2", "x-pagination-next-cursor": "eyIxIjo1MjcyNjU2MTd9", }, }); await stub.setStub(); const translations = await lokaliseApi.translations().list({ ...params, }); expect(projectId).toEqual(project_id); expect(translations.items[0].translation_id).to.eq(304581213); expect(translations.totalResults).to.eq(0); expect(translations.totalPages).to.eq(0); expect(translations.resultsPerPage).to.eq(2); expect(translations.currentPage).to.eq(0); expect(translations.nextCursor).to.eq("eyIxIjo1MjcyNjU2MTd9"); expect(translations.hasNextCursor()).to.be.true; }); it("retrieves", async () => { const stub = new Stub({ fixture: "translations/retrieve.json", uri: `projects/${projectId}/translations/${translationId}`, }); await stub.setStub(); const translation = await lokaliseApi.translations().get(translationId, { project_id: projectId, }); expect(translation.translation_id).to.eq(translationId); expect(translation.key_id).to.eq(44596059); expect(translation.language_iso).to.eq("en"); expect(translation.translation).to.eq("Message"); expect(translation.modified_by).to.eq(20181); expect(translation.modified_by_email).to.eq("bodrovis@protonmail.com"); expect(translation.modified_at).to.eq("2020-05-11 11:20:33 (Etc/UTC)"); expect(translation.modified_at_timestamp).to.eq(1589196033); expect(translation.is_reviewed).to.be.false; expect(translation.reviewed_by).to.eq(0); expect(translation.is_unverified).to.be.false; expect(translation.is_fuzzy).to.be.false; expect(translation.words).to.eq(1); expect(translation.custom_translation_statuses).to.have.lengthOf(0); expect(translation.task_id).to.eq(null); }); it("updates", async () => { const params = { translation: "test" }; const stub = new Stub({ fixture: "translations/update.json", uri: `projects/${projectId}/translations/${translationId}`, body: params, method: "PUT", }); await stub.setStub(); const translation = await lokaliseApi .translations() .update(translationId, params, { project_id: projectId, }); expect(translation.translation_id).to.eq(translationId); expect(translation.translation).to.eq("test"); }); });