@lokalise/node-api
Version:
Official Lokalise API 2.0 Node.js client
178 lines (152 loc) • 4.58 kB
text/typescript
import { describe, expect, it, LokaliseApiOta, Stub } from "../setup.js";
describe("OtaBundleManagement", () => {
const token = process.env.API_JWT;
const lokaliseApiOta = new LokaliseApiOta({ apiKey: token });
const rootUrl = lokaliseApiOta.clientData.host;
const teamId = 176692;
const projectId = "88628569645b945648b474.25982965";
const bundleId = 680066;
it("lists", async () => {
const stub = new Stub({
fixture: "ota_bundle_management/list.json",
uri: `teams/${teamId}/projects/${projectId}/bundles`,
version: "v3",
skipApiToken: true,
rootUrl,
reqHeaders: {
Authorization: `Bearer ${token}`,
},
});
await stub.setStub();
const bundles = await lokaliseApiOta.otaBundleManagement().list({
teamId: teamId,
lokaliseProjectId: projectId,
});
expect(bundles.length).to.eq(1);
const bundle = bundles[0];
expect(bundle.id).to.eq(bundleId);
});
it("retrieves", async () => {
const stub = new Stub({
fixture: "ota_bundle_management/retrieve.json",
uri: `teams/${teamId}/projects/${projectId}/bundles/${bundleId}`,
version: "v3",
skipApiToken: true,
rootUrl,
reqHeaders: {
Authorization: `Bearer ${token}`,
},
});
await stub.setStub();
const bundle = await lokaliseApiOta.otaBundleManagement().get(bundleId, {
teamId: teamId,
lokaliseProjectId: projectId,
});
expect(bundle.id).to.eq(bundleId);
expect(bundle.projectId).to.eq(projectId);
expect(bundle.isPrerelease).to.eq(true);
expect(bundle.isProduction).to.eq(true);
expect(bundle.createdAt).to.eq("2023-09-20T13:39:20.469Z");
expect(bundle.createdBy).to.eq("20181");
expect(bundle.framework).to.eq("ios_sdk");
expect(bundle.description).to.eq("");
expect(bundle.isFrozen).to.eq(false);
expect(bundle.lokaliseId).to.eq(859006);
expect(bundle.fileId).to.eq("9b946841-a83c-4353-be2c-13f387406e6d");
expect(bundle.modifiedAt).to.eq("2023-09-20T13:39:20.469Z");
expect(bundle.fileUrl).to.include("ota-bundles.lokalise.com");
});
it("updates", async () => {
const params = {
description: "updated!",
};
const stub = new Stub({
fixture: "ota_bundle_management/update.json",
uri: `teams/${teamId}/projects/${projectId}/bundles/${bundleId}`,
version: "v3",
skipApiToken: true,
body: params,
method: "PATCH",
rootUrl,
reqHeaders: {
Authorization: `Bearer ${token}`,
},
});
await stub.setStub();
const bundle = await lokaliseApiOta
.otaBundleManagement()
.update(bundleId, params, {
teamId: teamId,
lokaliseProjectId: projectId,
});
expect(bundle.description).to.eq(params.description);
});
it("deletes", async () => {
const stub = new Stub({
fixture: "ota_bundle_management/delete.json",
uri: `teams/${teamId}/projects/${projectId}/bundles/${bundleId}`,
version: "v3",
skipApiToken: true,
method: "DELETE",
rootUrl,
reqHeaders: {
Authorization: `Bearer ${token}`,
},
});
await stub.setStub();
const response = await lokaliseApiOta
.otaBundleManagement()
.delete(bundleId, {
teamId: teamId,
lokaliseProjectId: projectId,
});
expect(response.id).to.eq(bundleId);
expect(response.deleted).to.be.true;
});
it("raises an error for unexpected delete response with data as string", async () => {
const stub = new Stub({
fixture: "ota_bundle_management/delete_invalid.json",
uri: `teams/${teamId}/projects/${projectId}/bundles/${bundleId}`,
version: "v3",
skipApiToken: true,
method: "DELETE",
rootUrl,
reqHeaders: {
Authorization: `Bearer ${token}`,
},
});
await stub.setStub();
await expect(
lokaliseApiOta.otaBundleManagement().delete(bundleId, {
teamId: teamId,
lokaliseProjectId: projectId,
}),
).rejects.toMatchObject({
message:
"Invalid response format: expected object or array of objects in `data`",
});
});
it("raises an error for unexpected delete response with data as array with null items", async () => {
const stub = new Stub({
fixture: "ota_bundle_management/delete_invalid2.json",
uri: `teams/${teamId}/projects/${projectId}/bundles/${bundleId}`,
version: "v3",
skipApiToken: true,
method: "DELETE",
rootUrl,
reqHeaders: {
Authorization: `Bearer ${token}`,
},
});
await stub.setStub();
await expect(
lokaliseApiOta.otaBundleManagement().delete(bundleId, {
teamId: teamId,
lokaliseProjectId: projectId,
}),
).rejects.toMatchObject({
message:
"Invalid response format: expected object or array of objects in `data`",
});
});
});