@lokalise/node-api
Version:
Official Lokalise API 2.0 Node.js client
214 lines (178 loc) • 6.7 kB
text/typescript
import { describe, expect, it, LokaliseApi, Stub } from "../setup.js";
describe("Screenshots", () => {
const lokaliseApi = new LokaliseApi({ apiKey: process.env.API_KEY });
const projectId = "803826145ba90b42d5d860.46800099";
const screenshotId = 757673;
const secondScreenshotId = 3527037;
const data =
"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAAgCAIAAACw8uBbAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAASdEVYdFNvZnR3YXJlAEdyZWVuc2hvdF5VCAUAAALkSURBVGhD7ZnNattAEIDzAO65r+CWtNCrqWUby01SHISVCqMeQujBhda0hlx8co6pDy0Un9pT60AuPRZKUK59APeNOquR5NXoZ7XyOnJgzYeQRrOzu99uJIj2Hjwycnj42PjZ7P1pH8DxSdOafflGIPlArf7u0rsem00Sz6d2uvCuLp7VJVuxvrzb8Od5C0uyAo/12SsxBkS2rcA7sP+0DdLhSOJZyHqvmRc/PPhJL5USavVX46tg5WSXbZO2Yu+abaC9V8Pe81ZHc/do79WgvVeDhPf351M4Xi6+8/AJmuIU9Q7S0TIvHSOaEhTyjtLRcmQ8imhKIPYeSUfL0XkU2QUaxtFy5MzNNomXQGGpHKTfq/fduzBzV7wT0QSSXBXaO4zbnJ+5/96+BpZ9NnoSwYktXWc1GkyMdsM8vhmxu3jJ8uORQIQ9wAo3tplVc94PGmIOX4pLCy5X7hHm+NXWQ/rYPEwtpRbp54x1MhR47w/iU2KC+NHj5EN9vi9/c0FDCGZEXKzJiuNi0F78nLPjId5aL5gbrD1bAFaWr0+ac0MKS4Wt+GQlZHr/1O39PThMAnHypiXgFotE+5fBRg4i3Mz5/Yh7MCXC54fntJfMnHXXE5etAZ8Zkdocb2ErPFdIpneim+elNcjxjgxtB6yxeYq9x+/m58elrHtJy9ncO/6x3qn3adckuhGIT6YzoXcApPhPidTnDD/J5N38/Ji1sJeUHCyF1qI1yM7kg8EAkptAFXnP968mfdRAZPThPJKe6h0er8EjIhwxzgSDyR3nzy32riORhBTfVLyX1By+1IrrETY+qZxsDu9YrL+NzQ4I3qu/ei8i6XDunr7hpad61xRB4N1sdX776uFoWzaRDpB8TUEE3gGn0wXpcCRxzSaIvWu2gfZeDdp7NWjv1aC9V4OEd/19VSFFvevvq2op5F1/X1WO2PvufF9tGOOFdz1zFPzDRGGpcki/V++Fd2Fmxd5bnf90pEGocXtKKgAAAABJRU5ErkJggg==";
it("lists", async () => {
const stub = new Stub({
fixture: "screenshots/list.json",
uri: `projects/${projectId}/screenshots`,
respHeaders: {
"x-pagination-total-count": "2",
"x-pagination-page": "1",
"x-pagination-limit": "500",
"x-pagination-page-count": "1",
},
});
await stub.setStub();
const screenshots = await lokaliseApi.screenshots().list({
project_id: projectId,
});
expect(screenshots.items[0].screenshot_id).to.eq(757672);
});
it("lists and paginates", async () => {
const params = {
page: 2,
limit: 1,
};
const stub = new Stub({
fixture: "screenshots/list_pagination.json",
uri: `projects/${projectId}/screenshots`,
query: params,
respHeaders: {
"x-pagination-total-count": "2",
"x-pagination-page": "2",
"x-pagination-limit": "1",
"x-pagination-page-count": "2",
},
});
await stub.setStub();
const screenshots = await lokaliseApi.screenshots().list({
project_id: projectId,
...params,
});
expect(screenshots.items[0].screenshot_id).to.eq(screenshotId);
expect(screenshots.items[0].key_ids).to.include(74166107);
expect(screenshots.totalResults).to.eq(2);
expect(screenshots.totalPages).to.eq(2);
expect(screenshots.resultsPerPage).to.eq(1);
expect(screenshots.currentPage).to.eq(2);
expect(screenshots.hasPrevPage()).to.be.true;
expect(screenshots.prevPage()).to.eq(1);
});
it("lists with error", async () => {
const stub = new Stub({
fixture: "screenshots/list_error.json",
uri: "projects//screenshots",
status: 404,
respHeaders: {
"x-pagination-total-count": "2",
"x-pagination-page": "1",
"x-pagination-limit": "500",
"x-pagination-page-count": "1",
},
});
await stub.setStub();
await lokaliseApi
.screenshots()
.list({
project_id: "",
})
.catch((e) => {
expect(e.message).to.eq("Not Found");
expect(e.code).to.eq(404);
});
});
it("retrieves", async () => {
const stub = new Stub({
fixture: "screenshots/retrieve.json",
uri: `projects/${projectId}/screenshots/${screenshotId}`,
});
await stub.setStub();
const screenshot = await lokaliseApi.screenshots().get(screenshotId, {
project_id: projectId,
});
expect(screenshot.screenshot_id).to.eq(screenshotId);
expect(screenshot.key_ids).to.include(74166107);
expect(screenshot.title).to.eq("123");
expect(screenshot.description).to.eq("");
expect(screenshot.screenshot_tags.length).to.eq(0);
expect(screenshot.keys[0].key_id).to.eq(74166107);
expect(screenshot.keys[0].coordinates.height).to.eq(12);
expect(screenshot.url).to.include("s3.eu-central-1");
expect(screenshot.width).to.eq(1506);
expect(screenshot.height).to.eq(411);
expect(screenshot.created_at).to.eq("2021-03-16 17:55:01 (Etc/UTC)");
expect(screenshot.created_at_timestamp).to.eq(1615917301);
});
it("creates", async () => {
const params = [
{
data: data,
ocr: false,
key_ids: [378217831],
tags: ["onboarding"],
},
];
const stub = new Stub({
fixture: "screenshots/create.json",
uri: `projects/${projectId}/screenshots`,
method: "POST",
body: { screenshots: params },
});
await stub.setStub();
const screenshots = await lokaliseApi
.screenshots()
.create(params, { project_id: projectId });
expect(screenshots.items[0].screenshot_id).to.eq(secondScreenshotId);
expect(screenshots.items[0].key_ids).to.include(378217831);
expect(screenshots.errors).to.be.lengthOf(0);
});
it("raises error when create response is malformed", async () => {
const params = [
{
data: data,
ocr: false,
key_ids: [378217831],
tags: ["onboarding"],
},
];
const stub = new Stub({
fixture: "screenshots/create_malformed.json",
uri: `projects/${projectId}/screenshots`,
method: "POST",
body: { screenshots: params },
});
await stub.setStub();
try {
await lokaliseApi.screenshots().create(params, { project_id: projectId });
} catch (e) {
expect(e.message).toEqual(
"Expected an array under 'screenshots' but received: object",
);
}
});
it("updates", async () => {
const params = { title: "node screen", description: "node desc" };
const stub = new Stub({
fixture: "screenshots/update.json",
uri: `projects/${projectId}/screenshots/${secondScreenshotId}`,
method: "PUT",
body: params,
});
await stub.setStub();
const screenshot = await lokaliseApi
.screenshots()
.update(secondScreenshotId, params, { project_id: projectId });
expect(screenshot.screenshot_id).to.eq(secondScreenshotId);
expect(screenshot.title).to.eq("node screen");
expect(screenshot.description).to.eq("node desc");
});
it("deletes", async () => {
const stub = new Stub({
fixture: "screenshots/delete.json",
uri: `projects/${projectId}/screenshots/${secondScreenshotId}`,
method: "DELETE",
});
await stub.setStub();
const response = await lokaliseApi
.screenshots()
.delete(secondScreenshotId, { project_id: projectId });
expect(response.project_id).to.eq(projectId);
expect(response.screenshot_deleted).to.be.true;
expect(response.branch).to.eq("master");
});
});