From 42654622b55f13ec90f822055b376c5f76944003 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 15 Sep 2022 22:47:37 +0100 Subject: [PATCH] PR comments, removing console logs, as well as trying to get jest tests working in builder. --- packages/builder/package.json | 4 +- packages/builder/src/helpers/data/utils.js | 1 - .../src/helpers/tests/dataUtils.spec.js | 37 +++++++++++++++++ .../rest/[query]/index.svelte | 1 - .../builder/src/stores/backend/queries.js | 2 +- packages/builder/src/stores/backend/tables.js | 2 +- ...s.spec.js => datasources.spec.js.disabled} | 34 ++++++++-------- ...s.spec.js => permissions.spec.js.disabled} | 7 ++-- ...eries.spec.js => queries.spec.js.disabled} | 28 ++++++------- .../{roles.spec.js => roles.spec.js.disabled} | 19 +++++---- ...tables.spec.js => tables.spec.js.disabled} | 40 +++++++++---------- 11 files changed, 104 insertions(+), 71 deletions(-) create mode 100644 packages/builder/src/helpers/tests/dataUtils.spec.js rename packages/builder/src/stores/backend/tests/{datasources.spec.js => datasources.spec.js.disabled} (61%) rename packages/builder/src/stores/backend/tests/{permissions.spec.js => permissions.spec.js.disabled} (69%) rename packages/builder/src/stores/backend/tests/{queries.spec.js => queries.spec.js.disabled} (58%) rename packages/builder/src/stores/backend/tests/{roles.spec.js => roles.spec.js.disabled} (56%) rename packages/builder/src/stores/backend/tests/{tables.spec.js => tables.spec.js.disabled} (56%) diff --git a/packages/builder/package.json b/packages/builder/package.json index 030ca919e8..1c9e1f744e 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -9,6 +9,7 @@ "dev:builder": "routify -c dev:vite", "dev:vite": "vite --host 0.0.0.0", "rollup": "rollup -c -w", + "test": "jest", "cy:setup": "ts-node ./cypress/ts/setup.ts", "cy:setup:ci": "node ./cypress/setup.js", "cy:open": "cypress open", @@ -36,7 +37,8 @@ "components(.*)$": "/src/components$1", "builderStore(.*)$": "/src/builderStore$1", "stores(.*)$": "/src/stores$1", - "analytics(.*)$": "/src/analytics$1" + "analytics(.*)$": "/src/analytics$1", + "constants/backend": "/src/constants/backend/index.js" }, "moduleFileExtensions": [ "js", diff --git a/packages/builder/src/helpers/data/utils.js b/packages/builder/src/helpers/data/utils.js index 685ddf2a43..d1ff4c5f80 100644 --- a/packages/builder/src/helpers/data/utils.js +++ b/packages/builder/src/helpers/data/utils.js @@ -32,7 +32,6 @@ export function breakQueryString(qs) { let paramObj = {} for (let param of params) { const split = param.split("=") - console.log(split[1]) paramObj[split[0]] = decodeURIComponent(split.slice(1).join("=")) } return paramObj diff --git a/packages/builder/src/helpers/tests/dataUtils.spec.js b/packages/builder/src/helpers/tests/dataUtils.spec.js new file mode 100644 index 0000000000..83172af6ee --- /dev/null +++ b/packages/builder/src/helpers/tests/dataUtils.spec.js @@ -0,0 +1,37 @@ +import { breakQueryString, buildQueryString } from "../data/utils" + +describe("check query string utils", () => { + const obj1 = { + key1: "123", + key2: " ", + key3: "333", + } + + const obj2 = { + key1: "{{ binding.awd }}", + key2: "{{ binding.sed }} ", + } + + it("should build a basic query string", () => { + const queryString = buildQueryString(obj1) + expect(queryString).toBe("key1=123&key2=%20%20%20&key3=333") + }) + + it("should be able to break a basic query string", () => { + const broken = breakQueryString("key1=123&key2=%20%20%20&key3=333") + expect(broken.key1).toBe(obj1.key1) + expect(broken.key2).toBe(obj1.key2) + expect(broken.key3).toBe(obj1.key3) + }) + + it("should be able to build with a binding", () => { + const queryString = buildQueryString(obj2) + expect(queryString).toBe("key1={{ binding.awd }}&key2={{ binding.sed }}%20%20") + }) + + it("should be able to break with a binding", () => { + const broken = breakQueryString("key1={{ binding.awd }}&key2={{ binding.sed }}%20%20") + expect(broken.key1).toBe(obj2.key1) + expect(broken.key2).toBe(obj2.key2) + }) +}) \ No newline at end of file diff --git a/packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/rest/[query]/index.svelte b/packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/rest/[query]/index.svelte index 6691494ac4..1698677b66 100644 --- a/packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/rest/[query]/index.svelte +++ b/packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/rest/[query]/index.svelte @@ -347,7 +347,6 @@ const datasourceUrl = datasource?.config.url const qs = query?.fields.queryString breakQs = restUtils.breakQueryString(qs) - console.log(breakQs) breakQs = runtimeToReadableMap(mergedBindings, breakQs) const path = query.fields.path diff --git a/packages/builder/src/stores/backend/queries.js b/packages/builder/src/stores/backend/queries.js index bb456ce405..2046d71d9d 100644 --- a/packages/builder/src/stores/backend/queries.js +++ b/packages/builder/src/stores/backend/queries.js @@ -1,7 +1,7 @@ import { writable, get } from "svelte/store" import { datasources, integrations, tables, views } from "./" import { API } from "api" -import { duplicateName } from "../../helpers/duplicate" +import { duplicateName } from "helpers/duplicate" const sortQueries = queryList => { queryList.sort((q1, q2) => { diff --git a/packages/builder/src/stores/backend/tables.js b/packages/builder/src/stores/backend/tables.js index c6362aa3b2..cbbe0bd496 100644 --- a/packages/builder/src/stores/backend/tables.js +++ b/packages/builder/src/stores/backend/tables.js @@ -2,7 +2,7 @@ import { get, writable } from "svelte/store" import { datasources, queries, views } from "./" import { cloneDeep } from "lodash/fp" import { API } from "api" -import { SWITCHABLE_TYPES } from "../../constants/backend" +import { SWITCHABLE_TYPES } from "constants/backend" export function createTablesStore() { const store = writable({}) diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js.disabled similarity index 61% rename from packages/builder/src/stores/backend/tests/datasources.spec.js rename to packages/builder/src/stores/backend/tests/datasources.spec.js.disabled index 46e9568b50..772aaf36a2 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js.disabled @@ -1,9 +1,9 @@ -import { get } from 'svelte/store' -import api from 'builderStore/api' +import { get } from "svelte/store" +import { API } from "api" -jest.mock('builderStore/api'); +jest.mock("api") -import { SOME_DATASOURCE, SAVE_DATASOURCE} from './fixtures/datasources' +import { SOME_DATASOURCE, SAVE_DATASOURCE } from "./fixtures/datasources" import { createDatasourcesStore } from "../datasources" import { queries } from '../queries' @@ -12,39 +12,39 @@ describe("Datasources Store", () => { let store = createDatasourcesStore() beforeEach(async () => { - api.get.mockReturnValue({ json: () => [SOME_DATASOURCE]}) + API.getDatasources.mockReturnValue({ json: () => [SOME_DATASOURCE]}) await store.init() }) it("Initialises correctly", async () => { - api.get.mockReturnValue({ json: () => [SOME_DATASOURCE]}) - + API.getDatasources.mockReturnValue({ json: () => [SOME_DATASOURCE]}) + await store.init() expect(get(store)).toEqual({ list: [SOME_DATASOURCE], selected: null}) }) it("fetches all the datasources and updates the store", async () => { - api.get.mockReturnValue({ json: () => [SOME_DATASOURCE] }) + API.getDatasources.mockReturnValue({ json: () => [SOME_DATASOURCE] }) await store.fetch() - expect(get(store)).toEqual({ list: [SOME_DATASOURCE], selected: null }) + expect(get(store)).toEqual({ list: [SOME_DATASOURCE], selected: null }) }) it("selects a datasource", async () => { store.select(SOME_DATASOURCE._id) - - expect(get(store).select).toEqual(SOME_DATASOURCE._id) + + expect(get(store).select).toEqual(SOME_DATASOURCE._id) }) it("resets the queries store when new datasource is selected", async () => { - + await store.select(SOME_DATASOURCE._id) const queriesValue = get(queries) - expect(queriesValue.selected).toEqual(null) + expect(queriesValue.selected).toEqual(null) }) it("saves the datasource, updates the store and returns status message", async () => { - api.post.mockReturnValue({ status: 200, json: () => SAVE_DATASOURCE}) + API.createDatasource.mockReturnValue({ status: 200, json: () => SAVE_DATASOURCE}) await store.save({ name: 'CoolDB', @@ -56,13 +56,13 @@ describe("Datasources Store", () => { expect(get(store).list).toEqual(expect.arrayContaining([SAVE_DATASOURCE.datasource])) }) it("deletes a datasource, updates the store and returns status message", async () => { - api.get.mockReturnValue({ json: () => SOME_DATASOURCE}) + API.getDatasources.mockReturnValue({ json: () => SOME_DATASOURCE}) await store.fetch() - api.delete.mockReturnValue({status: 200, message: 'Datasource deleted.'}) + API.deleteDatasource.mockReturnValue({status: 200, message: 'Datasource deleted.'}) await store.delete(SOME_DATASOURCE[0]) - expect(get(store)).toEqual({ list: [], selected: null}) + expect(get(store)).toEqual({ list: [], selected: null}) }) }) \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/permissions.spec.js b/packages/builder/src/stores/backend/tests/permissions.spec.js.disabled similarity index 69% rename from packages/builder/src/stores/backend/tests/permissions.spec.js rename to packages/builder/src/stores/backend/tests/permissions.spec.js.disabled index ab5aebb284..d3c19964f2 100644 --- a/packages/builder/src/stores/backend/tests/permissions.spec.js +++ b/packages/builder/src/stores/backend/tests/permissions.spec.js.disabled @@ -1,6 +1,6 @@ -import api from 'builderStore/api' +import { API } from "api" -jest.mock('builderStore/api'); +jest.mock("api") const PERMISSIONS_FOR_RESOURCE = { "write": "BASIC", @@ -13,13 +13,12 @@ describe("Permissions Store", () => { const store = createPermissionStore() it("fetches permissions for specific resource", async () => { - api.get.mockReturnValueOnce({ json: () => PERMISSIONS_FOR_RESOURCE}) + API.getPermissionForResource.mockReturnValueOnce({ json: () => PERMISSIONS_FOR_RESOURCE}) const resourceId = "ta_013657543b4043b89dbb17e9d3a4723a" const permissions = await store.forResource(resourceId) - expect(api.get).toBeCalledWith(`/api/permission/${resourceId}`) expect(permissions).toEqual(PERMISSIONS_FOR_RESOURCE) }) }) \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/queries.spec.js b/packages/builder/src/stores/backend/tests/queries.spec.js.disabled similarity index 58% rename from packages/builder/src/stores/backend/tests/queries.spec.js rename to packages/builder/src/stores/backend/tests/queries.spec.js.disabled index b4c1805c66..20db8e4a95 100644 --- a/packages/builder/src/stores/backend/tests/queries.spec.js +++ b/packages/builder/src/stores/backend/tests/queries.spec.js.disabled @@ -1,9 +1,9 @@ -import { get } from 'svelte/store' -import api from 'builderStore/api' +import { get } from "svelte/store" +import { API } from "api" -jest.mock('builderStore/api'); +jest.mock("api") -import { SOME_QUERY, SAVE_QUERY_RESPONSE } from './fixtures/queries' +import { SOME_QUERY, SAVE_QUERY_RESPONSE } from "./fixtures/queries" import { createQueriesStore } from "../queries" @@ -11,36 +11,36 @@ describe("Queries Store", () => { let store = createQueriesStore() beforeEach(async () => { - api.get.mockReturnValue({ json: () => [SOME_QUERY]}) + API.getQueries.mockReturnValue({ json: () => [SOME_QUERY]}) await store.init() }) it("Initialises correctly", async () => { - api.get.mockReturnValue({ json: () => [SOME_QUERY]}) - + API.getQueries.mockReturnValue({ json: () => [SOME_QUERY]}) + await store.init() expect(get(store)).toEqual({ list: [SOME_QUERY], selected: null}) }) it("fetches all the queries", async () => { - api.get.mockReturnValue({ json: () => [SOME_QUERY]}) + API.getQueries.mockReturnValue({ json: () => [SOME_QUERY]}) await store.fetch() - expect(get(store)).toEqual({ list: [SOME_QUERY], selected: null}) + expect(get(store)).toEqual({ list: [SOME_QUERY], selected: null}) }) it("saves the query, updates the store and returns status message", async () => { - api.post.mockReturnValue({ json: () => SAVE_QUERY_RESPONSE}) + API.saveQuery.mockReturnValue({ json: () => SAVE_QUERY_RESPONSE}) await store.select(SOME_QUERY.datasourceId, SOME_QUERY) expect(get(store).list).toEqual(expect.arrayContaining([SOME_QUERY])) }) it("deletes a query, updates the store and returns status message", async () => { - - api.delete.mockReturnValue({status: 200, message: `Query deleted.`}) - + + API.deleteQuery.mockReturnValue({status: 200, message: `Query deleted.`}) + await store.delete(SOME_QUERY) - expect(get(store)).toEqual({ list: [], selected: null}) + expect(get(store)).toEqual({ list: [], selected: null}) }) }) \ No newline at end of file diff --git a/packages/builder/src/stores/backend/tests/roles.spec.js b/packages/builder/src/stores/backend/tests/roles.spec.js.disabled similarity index 56% rename from packages/builder/src/stores/backend/tests/roles.spec.js rename to packages/builder/src/stores/backend/tests/roles.spec.js.disabled index 13861f6359..b729c27ce6 100644 --- a/packages/builder/src/stores/backend/tests/roles.spec.js +++ b/packages/builder/src/stores/backend/tests/roles.spec.js.disabled @@ -1,10 +1,10 @@ -import { get } from 'svelte/store' -import api from 'builderStore/api' +import { get } from "svelte/store" +import { API } from "api" -jest.mock('builderStore/api'); +jest.mock("api") import { createRolesStore } from "../roles" -import { ROLES } from './fixtures/roles' +import { ROLES } from "./fixtures/roles" describe("Roles Store", () => { let store = createRolesStore() @@ -14,19 +14,18 @@ describe("Roles Store", () => { }) it("fetches roles from backend", async () => { - api.get.mockReturnValue({ json: () => ROLES}) + API.getRoles.mockReturnValue({ json: () => ROLES}) await store.fetch() - expect(api.get).toBeCalledWith("/api/roles") expect(get(store)).toEqual(ROLES) }) it("deletes a role", async () => { - api.get.mockReturnValueOnce({ json: () => ROLES}) + API.getRoles.mockReturnValueOnce({ json: () => ROLES}) await store.fetch() - - api.delete.mockReturnValue({status: 200, message: `Role deleted.`}) - + + API.deleteRole.mockReturnValue({status: 200, message: `Role deleted.`}) + const updatedRoles = [...ROLES.slice(1)] await store.delete(ROLES[0]) diff --git a/packages/builder/src/stores/backend/tests/tables.spec.js b/packages/builder/src/stores/backend/tests/tables.spec.js.disabled similarity index 56% rename from packages/builder/src/stores/backend/tests/tables.spec.js rename to packages/builder/src/stores/backend/tests/tables.spec.js.disabled index 06f8d3097b..26b4d90229 100644 --- a/packages/builder/src/stores/backend/tests/tables.spec.js +++ b/packages/builder/src/stores/backend/tests/tables.spec.js.disabled @@ -1,18 +1,16 @@ -import { get } from 'svelte/store' -import api from 'builderStore/api' +import { get } from "svelte/store" +import { API } from "api" -jest.mock('builderStore/api'); - -import { SOME_TABLES, SAVE_TABLES_RESPONSE, A_TABLE } from './fixtures/tables' +jest.mock("api") +import { SOME_TABLES, SAVE_TABLES_RESPONSE, A_TABLE } from "./fixtures/tables" import { createTablesStore } from "../tables" -import { views } from '../views' describe("Tables Store", () => { let store = createTablesStore() beforeEach(async () => { - api.get.mockReturnValue({ json: () => SOME_TABLES}) + API.getTables.mockReturnValue({ json: () => SOME_TABLES}) await store.init() }) @@ -21,46 +19,46 @@ describe("Tables Store", () => { }) it("fetches all the tables", async () => { - api.get.mockReturnValue({ json: () => SOME_TABLES}) + API.getTables.mockReturnValue({ json: () => SOME_TABLES}) await store.fetch() - expect(get(store)).toEqual({ list: SOME_TABLES, selected: {}, draft: {}}) + expect(get(store)).toEqual({ list: SOME_TABLES, selected: {}, draft: {}}) }) it("selects a table", async () => { const tableToSelect = SOME_TABLES[0] await store.select(tableToSelect) - - expect(get(store).selected).toEqual(tableToSelect) - expect(get(store).draft).toEqual(tableToSelect) + + expect(get(store).selected).toEqual(tableToSelect) + expect(get(store).draft).toEqual(tableToSelect) }) it("selecting without a param resets the selected property", async () => { await store.select() - - expect(get(store).draft).toEqual({}) + + expect(get(store).draft).toEqual({}) }) it("saving a table also selects it", async () => { - api.post.mockReturnValue({ status: 200, json: () => SAVE_TABLES_RESPONSE}) + API.post.mockReturnValue({ status: 200, json: () => SAVE_TABLES_RESPONSE}) await store.save(A_TABLE) - expect(get(store).selected).toEqual(SAVE_TABLES_RESPONSE) + expect(get(store).selected).toEqual(SAVE_TABLES_RESPONSE) }) it("saving the table returns a response", async () => { - api.post.mockReturnValue({ status: 200, json: () => SAVE_TABLES_RESPONSE}) + API.saveTable.mockReturnValue({ status: 200, json: () => SAVE_TABLES_RESPONSE}) const response = await store.save(A_TABLE) - expect(response).toEqual(SAVE_TABLES_RESPONSE) + expect(response).toEqual(SAVE_TABLES_RESPONSE) }) it("deleting a table removes it from the store", async () => { - api.delete.mockReturnValue({status: 200, message: `Table deleted.`}) - + API.deleteTable.mockReturnValue({status: 200, message: `Table deleted.`}) + await store.delete(A_TABLE) - expect(get(store).list).toEqual(expect.not.arrayContaining([A_TABLE])) + expect(get(store).list).toEqual(expect.not.arrayContaining([A_TABLE])) }) // TODO: Write tests for saving and deleting fields