From b30886216c4947e567e2b91dd13737009e658905 Mon Sep 17 00:00:00 2001 From: Bernardo Raposo Date: Tue, 4 Jun 2019 12:26:06 +0100 Subject: [PATCH] test: add tests for export feature --- .../__tests__/__snapshots__/file.test.ts.snap | 28 ++++++ .../__tests__/__snapshots__/node.test.ts.snap | 9 ++ src/types/__tests__/export.test.ts | 96 +++++++++++++++++++ src/types/__tests__/file.test.ts | 12 +-- src/types/__tests__/node.test.ts | 73 ++++++++++++++ 5 files changed, 210 insertions(+), 8 deletions(-) create mode 100644 src/types/__tests__/__snapshots__/node.test.ts.snap create mode 100644 src/types/__tests__/export.test.ts create mode 100644 src/types/__tests__/node.test.ts diff --git a/src/types/__tests__/__snapshots__/file.test.ts.snap b/src/types/__tests__/__snapshots__/file.test.ts.snap index 881dea2..c70979c 100644 --- a/src/types/__tests__/__snapshots__/file.test.ts.snap +++ b/src/types/__tests__/__snapshots__/file.test.ts.snap @@ -1,5 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`File can get default file exports 1`] = ` +Object { + "data": Object { + "file": Object { + "exports": Array [ + Object { + "id": "0:1", + }, + ], + }, + }, +} +`; + exports[`File can get file comments 1`] = ` Object { "data": Object { @@ -26,3 +40,17 @@ Object { }, } `; + +exports[`File can get specific file exports 1`] = ` +Object { + "data": Object { + "file": Object { + "exports": Array [ + Object { + "id": "1:6", + }, + ], + }, + }, +} +`; diff --git a/src/types/__tests__/__snapshots__/node.test.ts.snap b/src/types/__tests__/__snapshots__/node.test.ts.snap new file mode 100644 index 0000000..84f4375 --- /dev/null +++ b/src/types/__tests__/__snapshots__/node.test.ts.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Node returns css export 1`] = `"width: 201px; height: 109px;"`; + +exports[`Node returns css export 2`] = `"width: 201px; height: 109px;"`; + +exports[`Node returns css export 3`] = `"width: 201px; height: 109px;"`; + +exports[`Node returns css export 4`] = `"width: 144px; height: 62px;"`; diff --git a/src/types/__tests__/export.test.ts b/src/types/__tests__/export.test.ts new file mode 100644 index 0000000..197a8f2 --- /dev/null +++ b/src/types/__tests__/export.test.ts @@ -0,0 +1,96 @@ +/* eslint-env jest */ + +import { graphql } from "graphql"; +import schema from "../../schema"; + +const figmaFile = "cLp23bR627jcuNSoBGkhL04E"; + +jest.setTimeout(10000); + +describe("Export", () => { + test("returns default export image", async () => { + const query = ` + query { + exports(id: "${figmaFile}") { + id + output + } + } + `; + + const response = await graphql(schema, query, null, { fileId: figmaFile }); + expect(response.data).toBeDefined(); + + const fileExports = response.data && response.data.exports; + fileExports.forEach(fileExport => { + const { id, output } = fileExport; + expect(id).toEqual("0:1"); + expect(output).not.toBeNull(); + }); + }); + + test("returns specific export image", async () => { + const nodeIds = ["1:6", "28:4"]; + const query = ` + query { + exports(id: "${figmaFile}", params: { ids: ${JSON.stringify(nodeIds)}}) { + id + output + } + } + `; + + const response = await graphql(schema, query, null, { fileId: figmaFile }); + expect(response.data).toBeDefined(); + + const fileExports: { id: string; output: string }[] = + response.data && response.data.exports; + fileExports.forEach((fileExport, index) => { + const { id, output } = fileExport; + expect(id).toEqual(nodeIds[index]); + expect(output).not.toBeNull(); + }); + }); + + test("returns svg format export", async () => { + const query = ` + query { + exports(id: "${figmaFile}", params: { format:svg }) { + id + output + } + } + `; + + const response = await graphql(schema, query, null, { fileId: figmaFile }); + expect(response.data).toBeDefined(); + + const fileExports = response.data && response.data.exports; + fileExports.forEach(fileExport => { + const { id, output } = fileExport; + expect(id).toEqual("0:1"); + expect(output).not.toBeNull(); + }); + }); + + test("returns jpg format export", async () => { + const query = ` + query { + exports(id: "${figmaFile}", params: { format:jpg }) { + id + output + } + } + `; + + const response = await graphql(schema, query, null, { fileId: figmaFile }); + expect(response.data).toBeDefined(); + + const fileExports = response.data && response.data.exports; + fileExports.forEach(fileExport => { + const { id, output } = fileExport; + expect(id).toEqual("0:1"); + expect(output).not.toBeNull(); + }); + }); +}); diff --git a/src/types/__tests__/file.test.ts b/src/types/__tests__/file.test.ts index 58617e9..1b6e3c9 100644 --- a/src/types/__tests__/file.test.ts +++ b/src/types/__tests__/file.test.ts @@ -29,7 +29,7 @@ describe("File", () => { expect(version).not.toBeNull(); }); - test("can get default file images", async () => { + test("can get default file exports", async () => { const query = ` query { file(id: "${figmaFile}") { @@ -42,12 +42,10 @@ describe("File", () => { const response = await graphql(schema, query, null, { fileId: figmaFile }); - expect(response).toEqual({ - data: { file: { exports: [{ id: "0:1" }] } }, - }); + expect(response).toMatchSnapshot(); }); - test("can get specific file images", async () => { + test("can get specific file exports", async () => { const query = ` query { file(id: "${figmaFile}") { @@ -60,9 +58,7 @@ describe("File", () => { const response = await graphql(schema, query, null, { fileId: figmaFile }); - expect(response).toEqual({ - data: { file: { exports: [{ id: "1:6" }] } }, - }); + expect(response).toMatchSnapshot(); }); test("can get file comments", async () => { diff --git a/src/types/__tests__/node.test.ts b/src/types/__tests__/node.test.ts new file mode 100644 index 0000000..3ceff8c --- /dev/null +++ b/src/types/__tests__/node.test.ts @@ -0,0 +1,73 @@ +/* eslint-env jest */ + +import { graphql } from "graphql"; +import schema from "../../schema"; + +const figmaFile = "cLp23bR627jcuNSoBGkhL04E"; + +jest.setTimeout(10000); + +describe("Node", () => { + test("returns default export image", async () => { + const query = ` + query { + file(id: "${figmaFile}") { + rectangles { + export + } + } + } + `; + + const response = await graphql(schema, query, null, { fileId: figmaFile }); + expect(response.data).not.toBeUndefined(); + + const rectangles = response.data && response.data.file.rectangles; + rectangles.forEach(rectangle => { + const { export: nodeExport } = rectangle; + expect(nodeExport).not.toBeNull(); + }); + }); + + test("returns jpg export", async () => { + const query = ` + query { + file(id: "${figmaFile}") { + rectangles { + export(params: { format: jpg }) + } + } + } + `; + + const response = await graphql(schema, query, null, { fileId: figmaFile }); + expect(response.data).not.toBeUndefined(); + + const rectangles = response.data && response.data.file.rectangles; + rectangles.forEach(rectangle => { + const { export: nodeExport } = rectangle; + expect(nodeExport).not.toBeNull(); + }); + }); + + test("returns css export", async () => { + const query = ` + query { + file(id: "${figmaFile}") { + rectangles { + export(params: { format: css }) + } + } + } + `; + + const response = await graphql(schema, query, null, { fileId: figmaFile }); + expect(response.data).not.toBeUndefined(); + + const rectangles = response.data && response.data.file.rectangles; + rectangles.forEach(rectangle => { + const { export: nodeExport } = rectangle; + expect(nodeExport).toMatchSnapshot(); + }); + }); +});