From dd4ed9b69dd3112f50226b63464aeeaf7eb30b13 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 17 Jun 2021 14:45:08 +0100 Subject: [PATCH 1/2] tidy up, fix UI tests --- .../src/components/backend/DataTable/DataTable.svelte | 2 +- .../backend/DataTable/modals/ExportModal.svelte | 2 +- .../src/components/deploy/DeploymentHistory.svelte | 3 +-- .../builder/app/[application]/data/table/_layout.svelte | 2 +- packages/builder/src/stores/backend/datasources.js | 4 ++-- .../builder/src/stores/backend/tests/datasources.spec.js | 6 +++--- packages/builder/src/stores/backend/tests/queries.spec.js | 7 ------- packages/builder/src/stores/backend/tests/tables.spec.js | 8 -------- packages/server/src/api/controllers/row/internal.js | 4 ++-- 9 files changed, 11 insertions(+), 27 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/DataTable.svelte b/packages/builder/src/components/backend/DataTable/DataTable.svelte index 025a6fc684..6498976751 100644 --- a/packages/builder/src/components/backend/DataTable/DataTable.svelte +++ b/packages/builder/src/components/backend/DataTable/DataTable.svelte @@ -74,6 +74,6 @@ {/if} - + {/if} diff --git a/packages/builder/src/components/backend/DataTable/modals/ExportModal.svelte b/packages/builder/src/components/backend/DataTable/modals/ExportModal.svelte index 17c0b0e0f5..740027a8fd 100644 --- a/packages/builder/src/components/backend/DataTable/modals/ExportModal.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/ExportModal.svelte @@ -20,7 +20,7 @@ async function exportView() { download( `/api/views/export?view=${encodeURIComponent( - view.name + view )}&format=${exportFormat}` ) } diff --git a/packages/builder/src/components/deploy/DeploymentHistory.svelte b/packages/builder/src/components/deploy/DeploymentHistory.svelte index 0cf4ef5c2f..f6bbcef4d4 100644 --- a/packages/builder/src/components/deploy/DeploymentHistory.svelte +++ b/packages/builder/src/components/deploy/DeploymentHistory.svelte @@ -88,8 +88,7 @@ onMount(() => { fetchDeployments() - // TODO: fix - // poll = setInterval(fetchDeployments, POLL_INTERVAL) + poll = setInterval(fetchDeployments, POLL_INTERVAL) }) onDestroy(() => clearInterval(poll)) diff --git a/packages/builder/src/pages/builder/app/[application]/data/table/_layout.svelte b/packages/builder/src/pages/builder/app/[application]/data/table/_layout.svelte index f957355c5c..200ebc8d46 100644 --- a/packages/builder/src/pages/builder/app/[application]/data/table/_layout.svelte +++ b/packages/builder/src/pages/builder/app/[application]/data/table/_layout.svelte @@ -9,7 +9,7 @@ if ( !$leftover && $tables.list.length > 0 - // (!$tables.selected || !$tables.selected._id) + (!$tables.selected || !$tables.selected._id) ) { $goto(`./${$tables.list[0]._id}`) } diff --git a/packages/builder/src/stores/backend/datasources.js b/packages/builder/src/stores/backend/datasources.js index 5e0cc168f2..bb4a94b63b 100644 --- a/packages/builder/src/stores/backend/datasources.js +++ b/packages/builder/src/stores/backend/datasources.js @@ -16,12 +16,12 @@ export function createDatasourcesStore() { init: async () => { const response = await api.get(`/api/datasources`) const json = await response.json() - set({ list: json }) + set({ list: json, selected: null }) }, fetch: async () => { const response = await api.get(`/api/datasources`) const json = await response.json() - update(state => ({ ...state, list: json })) + update(state => ({ ...state, list: json, selected: null })) return json }, select: async datasourceId => { diff --git a/packages/builder/src/stores/backend/tests/datasources.spec.js b/packages/builder/src/stores/backend/tests/datasources.spec.js index f4e10b6aa3..fb175f03b9 100644 --- a/packages/builder/src/stores/backend/tests/datasources.spec.js +++ b/packages/builder/src/stores/backend/tests/datasources.spec.js @@ -24,10 +24,10 @@ describe("Datasources Store", () => { }) it("fetches all the datasources and updates the store", async () => { - api.get.mockReturnValue({ json: () => [SOME_DATASOURCE]}) + api.get.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 () => { @@ -44,7 +44,7 @@ describe("Datasources Store", () => { }) it("saves the datasource, updates the store and returns status message", async () => { - api.post.mockReturnValue({ json: () => SAVE_DATASOURCE}) + api.post.mockReturnValue({ status: 200, json: () => SAVE_DATASOURCE}) await store.save({ name: 'CoolDB', diff --git a/packages/builder/src/stores/backend/tests/queries.spec.js b/packages/builder/src/stores/backend/tests/queries.spec.js index d1efd678f9..1d1a1d0154 100644 --- a/packages/builder/src/stores/backend/tests/queries.spec.js +++ b/packages/builder/src/stores/backend/tests/queries.spec.js @@ -30,13 +30,6 @@ describe("Queries Store", () => { expect(get(store)).toEqual({ list: [SOME_QUERY], selected: null}) }) - it("selects a query and updates selected datasource", async () => { - await store.select(SOME_QUERY) - - expect(get(store).selected).toEqual(SOME_QUERY._id) - expect(get(datasources).selected).toEqual(SOME_QUERY.datasourceId) - }) - it("saves the query, updates the store and returns status message", async () => { api.post.mockReturnValue({ json: () => SAVE_QUERY_RESPONSE}) diff --git a/packages/builder/src/stores/backend/tests/tables.spec.js b/packages/builder/src/stores/backend/tests/tables.spec.js index 72b68bd0e4..faed217d43 100644 --- a/packages/builder/src/stores/backend/tests/tables.spec.js +++ b/packages/builder/src/stores/backend/tests/tables.spec.js @@ -41,14 +41,6 @@ describe("Tables Store", () => { expect(get(store).draft).toEqual({}) }) - it("selecting a table updates the view store", async () => { - const tableToSelect = SOME_TABLES[0] - await store.select(tableToSelect) - - expect(get(store).selected).toEqual(tableToSelect) - expect(get(views).selected).toEqual({ name: tableToSelect._id }) - }) - it("saving a table also selects it", async () => { api.post.mockReturnValue({ json: () => SAVE_TABLES_RESPONSE}) diff --git a/packages/server/src/api/controllers/row/internal.js b/packages/server/src/api/controllers/row/internal.js index 2a55bcb333..93d4a63eb7 100644 --- a/packages/server/src/api/controllers/row/internal.js +++ b/packages/server/src/api/controllers/row/internal.js @@ -135,8 +135,8 @@ exports.fetchView = async ctx => { const viewName = ctx.params.viewName // if this is a table view being looked for just transfer to that - if (viewName.startsWith(TABLE_VIEW_BEGINS_WITH)) { - ctx.params.tableId = viewName.substring(4) + if (viewName.includes(DocumentTypes.TABLE)) { + ctx.params.tableId = viewName return exports.fetch(ctx) } From 35942d27b447a5572297553adebbc4d58af397a7 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 17 Jun 2021 15:24:52 +0100 Subject: [PATCH 2/2] fix up datasources and server tests --- packages/builder/cypress/support/commands.js | 5 +++-- packages/server/__mocks__/mysql.js | 2 +- packages/server/src/integrations/microsoftSqlServer.js | 8 ++++---- packages/server/src/integrations/mysql.js | 8 ++++---- packages/server/src/integrations/postgres.js | 2 +- .../src/integrations/tests/microsoftSqlServer.spec.js | 4 ++-- packages/server/src/integrations/tests/mysql.spec.js | 8 ++++---- packages/server/src/integrations/tests/postgres.spec.js | 8 ++++---- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/packages/builder/cypress/support/commands.js b/packages/builder/cypress/support/commands.js index 0d87697fdf..670f3fb988 100644 --- a/packages/builder/cypress/support/commands.js +++ b/packages/builder/cypress/support/commands.js @@ -37,7 +37,7 @@ Cypress.Commands.add("createApp", name => { cy.contains("Create app").click() }) .then(() => { - cy.get("[data-cy=new-table]", { + cy.contains("Budibase DB", { timeout: 20000, }).should("be.visible") }) @@ -72,7 +72,8 @@ Cypress.Commands.add("createTestTableWithData", () => { Cypress.Commands.add("createTable", tableName => { // Enter table name - cy.get("[data-cy=new-table]").click() + cy.get("Budibase DB") + cy.contains("Create new table").click() cy.get(".spectrum-Modal").within(() => { cy.get("input").first().type(tableName).blur() cy.get(".spectrum-ButtonGroup").contains("Create").click() diff --git a/packages/server/__mocks__/mysql.js b/packages/server/__mocks__/mysql.js index da0126e88b..d382755c50 100644 --- a/packages/server/__mocks__/mysql.js +++ b/packages/server/__mocks__/mysql.js @@ -2,7 +2,7 @@ const mysql = {} const client = { connect: jest.fn(), - query: jest.fn((query, fn) => { + query: jest.fn((query, bindings, fn) => { fn(null, []) }), } diff --git a/packages/server/src/integrations/microsoftSqlServer.js b/packages/server/src/integrations/microsoftSqlServer.js index 488fda94b1..1a916e0424 100644 --- a/packages/server/src/integrations/microsoftSqlServer.js +++ b/packages/server/src/integrations/microsoftSqlServer.js @@ -85,25 +85,25 @@ class SqlServerIntegration extends Sql { async read(query) { await this.connect() - const response = await internalQuery(this.client, query.sql) + const response = await internalQuery(this.client, query) return response.recordset } async create(query) { await this.connect() - const response = await internalQuery(this.client, query.sql) + const response = await internalQuery(this.client, query) return response.recordset || [{ created: true }] } async update(query) { await this.connect() - const response = await internalQuery(this.client, query.sql) + const response = await internalQuery(this.client, query) return response.recordset || [{ updated: true }] } async delete(query) { await this.connect() - const response = await internalQuery(this.client, query.sql) + const response = await internalQuery(this.client, query) return response.recordset || [{ deleted: true }] } diff --git a/packages/server/src/integrations/mysql.js b/packages/server/src/integrations/mysql.js index 0907a83f4c..37971574e2 100644 --- a/packages/server/src/integrations/mysql.js +++ b/packages/server/src/integrations/mysql.js @@ -79,21 +79,21 @@ class MySQLIntegration extends Sql { } async create(query) { - const results = await internalQuery(this.client, query.sql) + const results = await internalQuery(this.client, query) return results.length ? results : [{ created: true }] } read(query) { - return internalQuery(this.client, query.sql) + return internalQuery(this.client, query) } async update(query) { - const results = await internalQuery(this.client, query.sql) + const results = await internalQuery(this.client, query) return results.length ? results : [{ updated: true }] } async delete(query) { - const results = await internalQuery(this.client, query.sql) + const results = await internalQuery(this.client, query) return results.length ? results : [{ deleted: true }] } diff --git a/packages/server/src/integrations/postgres.js b/packages/server/src/integrations/postgres.js index 2458afa333..a7148e335c 100644 --- a/packages/server/src/integrations/postgres.js +++ b/packages/server/src/integrations/postgres.js @@ -168,7 +168,7 @@ class PostgresIntegration extends Sql { return response.rows.length ? response.rows : [{ updated: true }] } - async delete({ sql }) { + async delete(sql) { const response = await internalQuery(this.client, sql) return response.rows.length ? response.rows : [{ deleted: true }] } diff --git a/packages/server/src/integrations/tests/microsoftSqlServer.spec.js b/packages/server/src/integrations/tests/microsoftSqlServer.spec.js index 5d7d59a647..af65fcbec4 100644 --- a/packages/server/src/integrations/tests/microsoftSqlServer.spec.js +++ b/packages/server/src/integrations/tests/microsoftSqlServer.spec.js @@ -20,7 +20,7 @@ describe("MS SQL Server Integration", () => { const response = await config.integration.create({ sql }) - expect(config.integration.client.query).toHaveBeenCalledWith(sql) + expect(config.integration.client.query).toHaveBeenCalledWith(sql, undefined) }) it("calls the read method with the correct params", async () => { @@ -28,7 +28,7 @@ describe("MS SQL Server Integration", () => { const response = await config.integration.read({ sql }) - expect(config.integration.client.query).toHaveBeenCalledWith(sql) + expect(config.integration.client.query).toHaveBeenCalledWith(sql, undefined) }) describe("no rows returned", () => { diff --git a/packages/server/src/integrations/tests/mysql.spec.js b/packages/server/src/integrations/tests/mysql.spec.js index 71b828a4e6..6d6d00dd67 100644 --- a/packages/server/src/integrations/tests/mysql.spec.js +++ b/packages/server/src/integrations/tests/mysql.spec.js @@ -19,7 +19,7 @@ describe("MySQL Integration", () => { await config.integration.create({ sql }) - expect(config.integration.client.query).toHaveBeenCalledWith(sql, expect.any(Function)) + expect(config.integration.client.query).toHaveBeenCalledWith(sql, undefined, expect.any(Function)) }) it("calls the read method with the correct params", async () => { @@ -27,7 +27,7 @@ describe("MySQL Integration", () => { await config.integration.read({ sql }) - expect(config.integration.client.query).toHaveBeenCalledWith(sql, expect.any(Function)) + expect(config.integration.client.query).toHaveBeenCalledWith(sql, undefined, expect.any(Function)) }) it("calls the update method with the correct params", async () => { @@ -35,7 +35,7 @@ describe("MySQL Integration", () => { await config.integration.update({ sql }) - expect(config.integration.client.query).toHaveBeenCalledWith(sql, expect.any(Function)) + expect(config.integration.client.query).toHaveBeenCalledWith(sql, undefined, expect.any(Function)) }) it("calls the delete method with the correct params", async () => { @@ -43,7 +43,7 @@ describe("MySQL Integration", () => { await config.integration.delete({ sql }) - expect(config.integration.client.query).toHaveBeenCalledWith(sql, expect.any(Function)) + expect(config.integration.client.query).toHaveBeenCalledWith(sql, undefined, expect.any(Function)) }) describe("no rows returned", () => { diff --git a/packages/server/src/integrations/tests/postgres.spec.js b/packages/server/src/integrations/tests/postgres.spec.js index dc34fcf6bb..d0d579f32d 100644 --- a/packages/server/src/integrations/tests/postgres.spec.js +++ b/packages/server/src/integrations/tests/postgres.spec.js @@ -20,7 +20,7 @@ describe("Postgres Integration", () => { const response = await config.integration.create({ sql }) - expect(pg.queryMock).toHaveBeenCalledWith(sql) + expect(pg.queryMock).toHaveBeenCalledWith(sql, undefined) }) it("calls the read method with the correct params", async () => { @@ -28,7 +28,7 @@ describe("Postgres Integration", () => { const response = await config.integration.read({ sql }) - expect(pg.queryMock).toHaveBeenCalledWith(sql) + expect(pg.queryMock).toHaveBeenCalledWith(sql, undefined) }) it("calls the update method with the correct params", async () => { @@ -36,7 +36,7 @@ describe("Postgres Integration", () => { const response = await config.integration.update({ sql }) - expect(pg.queryMock).toHaveBeenCalledWith(sql) + expect(pg.queryMock).toHaveBeenCalledWith(sql, undefined) }) it("calls the delete method with the correct params", async () => { @@ -44,7 +44,7 @@ describe("Postgres Integration", () => { await config.integration.delete({ sql }) - expect(pg.queryMock).toHaveBeenCalledWith(sql) + expect(pg.queryMock).toHaveBeenCalledWith(sql, undefined) }) describe("no rows returned", () => {