123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- require("../setup");
- import { expect } from "chai";
- import { Cassettes } from "mocha-cassettes";
- import { LokaliseApi, KeyParamsWithPagination } from "../../src/main";
- describe("Keys", function () {
- const cassette = new Cassettes("./test/cassettes");
- const lokaliseApi = new LokaliseApi({ apiKey: process.env.API_KEY });
- const project_id = "803826145ba90b42d5d860.46800099";
- const key_id = 15519786;
- const second_key_id = 15814906;
- cassette
- .createTest("list", async () => {
- const params: KeyParamsWithPagination = { project_id: project_id };
- const keys = await lokaliseApi.keys().list(params);
- expect(keys.items[0].key_id).to.eq(key_id);
- })
- .register(this);
- cassette
- .createTest("list_pagination", async () => {
- const keys = await lokaliseApi.keys().list({
- project_id: project_id,
- page: 2,
- limit: 3,
- });
- expect(keys.items[0].key_id).to.eq(15814906);
- expect(keys.totalResults).to.eq(21);
- expect(keys.totalPages).to.eq(7);
- expect(keys.resultsPerPage).to.eq(3);
- expect(keys.currentPage).to.eq(2);
- })
- .register(this);
- cassette
- .createTest("get", async () => {
- const key = await lokaliseApi.keys().get(44596066, {
- project_id: project_id,
- disable_references: 1,
- });
- expect(key.key_id).to.eq(44596066);
- expect(key.created_at).to.eq("2020-05-11 11:20:33 (Etc/UTC)");
- expect(key.created_at_timestamp).to.eq(1589196033);
- expect(key.key_name.ios).to.eq("static_pages:index:welcome");
- expect(key.filenames.web).to.eq("%LANG_ISO%.yml");
- expect(key.description).to.eq("");
- expect(key.platforms).to.include("web");
- expect(key.tags).to.have.lengthOf(0);
- expect(key.comments).to.have.lengthOf(0);
- expect(key.screenshots).to.have.lengthOf(0);
- expect(key.translations[0].words).to.eq(2);
- expect(key.is_plural).to.be.false;
- expect(key.plural_name).to.eq("");
- expect(key.is_hidden).to.be.true;
- expect(key.is_archived).to.be.false;
- expect(key.context).to.eq("");
- expect(key.base_words).to.eq(1);
- expect(key.char_limit).to.eq(0);
- expect(key.custom_attributes).to.eq("");
- expect(key.modified_at).to.eq("2020-05-11 11:20:33 (Etc/UTC)");
- expect(key.modified_at_timestamp).to.eq(1589196033);
- expect(key.translations_modified_at).to.eq(
- "2020-05-15 10:44:42 (Etc/UTC)"
- );
- expect(key.translations_modified_at_timestamp).to.eq(1589539482);
- })
- .register(this);
- cassette
- .createTest("create", async () => {
- const keys = await lokaliseApi.keys().create(
- {
- keys: [
- {
- key_name: "welcome_web",
- description: "Index app welcome",
- platforms: ["web"],
- filenames: {
- web: "my_filename.json",
- },
- translations: [
- {
- language_iso: "en",
- translation: "Welcome",
- },
- ],
- },
- {
- key_name: "welcome_ios",
- description: "Welcome apple",
- platforms: ["ios"],
- is_plural: true,
- translations: [
- {
- language_iso: "en",
- translation: {
- one: "I have one apple",
- other: "I have a lot of apples",
- },
- },
- ],
- },
- ],
- },
- { project_id: project_id }
- );
- expect(keys.items[0].key_name["web"]).to.eq("welcome_web");
- expect(keys.items[0].platforms).to.include("web");
- expect(keys.items[0].filenames["web"]).to.eq("my_filename.json");
- expect(keys.items[0].translations[1].translation).to.eq("Welcome");
- expect(keys.items[1].key_name["ios"]).to.eq("welcome_ios");
- expect(keys.items[1].platforms).to.include("ios");
- expect(keys.items[1].translations[1].language_iso).to.eq("en");
- })
- .register(this);
- cassette
- .createTest("create_with_error", async () => {
- const keys = await lokaliseApi.keys().create(
- {
- keys: [
- {
- key_name: "searching:results:nothing_found",
- description: "this is a duplicate",
- platforms: ["web"],
- filenames: {
- web: "%LANG_ISO%.yml",
- },
- translations: [
- {
- language_iso: "en",
- translation: "duplicate",
- },
- ],
- },
- {
- key_name: "key_not_dup",
- platforms: ["web"],
- translations: [
- {
- language_iso: "en",
- translation: "Not duplicate!",
- },
- ],
- },
- ],
- },
- { project_id: project_id }
- );
- expect(keys.errors[0].message).to.eq("This key name is already taken");
- expect(keys.items[0].key_name.ios).to.eq("key_not_dup");
- })
- .register(this);
- cassette
- .createTest("create per-platform", async () => {
- const keys = await lokaliseApi.keys().create(
- {
- keys: [
- {
- key_name: {
- ios: "name_for_ios",
- web: "name_for_web",
- android: "android_name",
- other: "other_name",
- },
- platforms: ["web", "ios"],
- translations: [
- {
- language_iso: "en",
- translation: "Per-platform key names",
- },
- ],
- },
- ],
- },
- { project_id: project_id }
- );
- const key = keys.items[0];
- expect(key.key_name["web"]).to.eq("name_for_web");
- expect(key.key_name["ios"]).to.eq("name_for_ios");
- expect(key.platforms).to.include("web", "ios");
- expect(key.platforms).not.to.include("android", "other");
- })
- .register(this);
- cassette
- .createTest("update", async () => {
- const key = await lokaliseApi.keys().update(
- key_id,
- {
- platforms: ["web", "other"],
- description: "Node updated",
- },
- { project_id: project_id }
- );
- expect(key.key_id).to.eq(key_id);
- expect(key.platforms).to.include("web", "other");
- expect(key.description).to.eq("Node updated");
- })
- .register(this);
- cassette
- .createTest("bulk_update", async () => {
- const keys = await lokaliseApi.keys().bulk_update(
- {
- keys: [
- {
- key_id: key_id,
- description: "Bulk node",
- platforms: ["web"],
- },
- {
- key_id: second_key_id,
- description: "Second bulk",
- },
- ],
- },
- { project_id: project_id }
- );
- expect(keys.items[0].key_id).to.eq(key_id);
- expect(keys.items[0].description).to.eq("Bulk node");
- expect(keys.items[0].platforms).to.include("web");
- expect(keys.items[0].platforms).not.to.include("other");
- expect(keys.items[1].key_id).to.eq(second_key_id);
- expect(keys.items[1].description).to.eq("Second bulk");
- expect(keys.errors.length).to.eq(0);
- })
- .register(this);
- cassette
- .createTest("delete", async () => {
- const response = await lokaliseApi.keys().delete(23677306, {
- project_id: project_id,
- });
- expect(response.project_id).to.eq(project_id);
- expect(response.key_removed).to.be.true;
- expect(response.keys_locked).to.eq(0);
- })
- .register(this);
- cassette
- .createTest("bulk_delete", async () => {
- const response = await lokaliseApi.keys().bulk_delete([23646011], {
- project_id: project_id,
- });
- expect(response.project_id).to.eq(project_id);
- expect(response.keys_removed).to.be.true;
- expect(response.keys_locked).to.eq(0);
- })
- .register(this);
- });
|