UNPKG

@lokalise/node-api

Version:
206 lines (168 loc) 5.17 kB
import { describe, expect, it, LokaliseApi, Stub } from "../setup.js"; describe("Languages", () => { const lokaliseApi = new LokaliseApi({ apiKey: process.env.API_KEY }); const projectId = "803826145ba90b42d5d860.46800099"; const langId = 640; const secondLangId = 910; it("lists", async () => { const stub = new Stub({ fixture: "languages/list.json", uri: `projects/${projectId}/languages`, respHeaders: { "x-pagination-total-count": "3", "x-pagination-page": "1", "x-pagination-limit": "500", "x-pagination-page-count": "1", }, }); await stub.setStub(); const languages = await lokaliseApi.languages().list({ project_id: projectId, }); expect(languages.items[0].lang_id).to.eq(803); expect(languages.items[0].lang_name).to.eq("Albanian"); }); it("lists and paginates", async () => { const params = { page: 3, limit: 1, }; const stub = new Stub({ fixture: "languages/list_pagination.json", uri: `projects/${projectId}/languages`, query: params, respHeaders: { "x-pagination-total-count": "3", "x-pagination-page": "3", "x-pagination-limit": "1", "x-pagination-page-count": "3", }, }); await stub.setStub(); const languages = await lokaliseApi.languages().list({ project_id: projectId, ...params, }); expect(languages.items[0].lang_id).to.eq(langId); expect(languages.items[0].lang_name).to.eq("English"); expect(languages.items[0].project_language_uuid).to.include( "01989e27-0e7e-7e1f-a9c3-1941288a4f85", ); expect(languages.totalResults).to.eq(3); expect(languages.totalPages).to.eq(3); expect(languages.resultsPerPage).to.eq(1); expect(languages.currentPage).to.eq(3); }); it("lists system languages with pagination", async () => { const params = { page: 3, limit: 2, }; const stub = new Stub({ fixture: "languages/list_system_pagination.json", uri: "system/languages", query: params, respHeaders: { "x-pagination-total-count": "619", "x-pagination-page": "3", "x-pagination-limit": "2", "x-pagination-page-count": "310", }, }); await stub.setStub(); const languages = await lokaliseApi.languages().system_languages({ ...params, }); expect(languages.items[0].lang_id).to.eq(792); expect(languages.items[0].lang_name).to.eq("Afrikaans (South Africa)"); expect(languages.totalResults).to.eq(619); expect(languages.totalPages).to.eq(310); expect(languages.resultsPerPage).to.eq(2); expect(languages.currentPage).to.eq(3); }); it("lists system languages", async () => { const stub = new Stub({ fixture: "languages/list_system.json", uri: "system/languages", respHeaders: { "x-pagination-total-count": "619", "x-pagination-page": "1", "x-pagination-limit": "5000", "x-pagination-page-count": "1", }, }); await stub.setStub(); const languages = await lokaliseApi.languages().system_languages(); expect(languages.items[0].lang_id).to.eq(792); expect(languages.items[0].lang_name).to.eq("Afrikaans (South Africa)"); }); it("retrieves", async () => { const stub = new Stub({ fixture: "languages/retrieve.json", uri: `projects/${projectId}/languages/${langId}`, }); await stub.setStub(); const language = await lokaliseApi.languages().get(langId, { project_id: projectId, }); expect(language.lang_id).to.eq(langId); expect(language.lang_name).to.eq("English"); expect(language.lang_iso).to.eq("en"); expect(language.is_rtl).to.be.false; expect(language.plural_forms).to.include("other"); expect(language.project_language_uuid).to.include( "01989e27-0e7e-7e1f-a9c3-1941288a4f85", ); }); it("creates", async () => { const params = [ { lang_iso: "ak", }, ]; const stub = new Stub({ fixture: "languages/create.json", uri: `projects/${projectId}/languages`, body: { languages: params }, method: "POST", }); await stub.setStub(); const languages = await lokaliseApi .languages() .create(params, { project_id: projectId }); expect(languages.items[0].lang_id).to.eq(secondLangId); expect(languages.items[0].lang_name).to.eq("Akan"); expect(languages.errors.length).to.eq(0); }); it("updates", async () => { const params = { lang_name: "Akan Custom", }; const stub = new Stub({ fixture: "languages/update.json", uri: `projects/${projectId}/languages/${secondLangId}`, body: params, method: "PUT", }); await stub.setStub(); const language = await lokaliseApi .languages() .update(secondLangId, params, { project_id: projectId }); expect(language.lang_id).to.eq(secondLangId); expect(language.lang_name).to.eq(params.lang_name); }); it("deletes", async () => { const stub = new Stub({ fixture: "languages/delete.json", uri: `projects/${projectId}/languages/${secondLangId}`, method: "DELETE", }); await stub.setStub(); const response = await lokaliseApi.languages().delete(secondLangId, { project_id: projectId, }); expect(response.project_id).to.eq(projectId); expect(response.language_deleted).to.be.true; expect(response.branch).to.eq("master"); }); });