From 74ee030c213d5372b8df06007ad8a9b6bd2629c5 Mon Sep 17 00:00:00 2001 From: Dean Date: Tue, 9 Apr 2024 14:37:57 +0100 Subject: [PATCH 1/8] Fix for missing columns in Table/Grid settings --- .../GridColumnConfiguration/GridColumnConfiguration.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/design/settings/controls/GridColumnConfiguration/GridColumnConfiguration.svelte b/packages/builder/src/components/design/settings/controls/GridColumnConfiguration/GridColumnConfiguration.svelte index 439bf5e261..19d61e1f2a 100644 --- a/packages/builder/src/components/design/settings/controls/GridColumnConfiguration/GridColumnConfiguration.svelte +++ b/packages/builder/src/components/design/settings/controls/GridColumnConfiguration/GridColumnConfiguration.svelte @@ -34,7 +34,7 @@ $selectedScreen, datasource )?.table?.primaryDisplay - $: schema = getSchema(selectedScreen, datasource) + $: schema = getSchema($selectedScreen, datasource) $: columns = getColumns({ columns: value, schema, From 76488e1aa117276062cd5044d0f20df11d3e8445 Mon Sep 17 00:00:00 2001 From: Dean Date: Tue, 9 Apr 2024 15:22:16 +0100 Subject: [PATCH 2/8] Allow heights down to 120px for Table --- packages/client/src/components/app/GridBlock.svelte | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/client/src/components/app/GridBlock.svelte b/packages/client/src/components/app/GridBlock.svelte index 085449a5b0..f6ef55f802 100644 --- a/packages/client/src/components/app/GridBlock.svelte +++ b/packages/client/src/components/app/GridBlock.svelte @@ -49,6 +49,7 @@ metadata: { dataSource: table }, }, ] + $: customHeight = $component?.styles?.normal?.height // Provide additional data context for live binding eval export const getAdditionalDataContext = () => { @@ -110,6 +111,7 @@
Date: Tue, 9 Apr 2024 15:28:46 +0100 Subject: [PATCH 3/8] Add rowexplorer to illegalChildren for the repeaterblock. --- packages/client/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/manifest.json b/packages/client/manifest.json index a056f59cc7..4ffe979c7d 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -6011,7 +6011,7 @@ "block": true, "name": "Repeater Block", "icon": "ViewList", - "illegalChildren": ["section"], + "illegalChildren": ["section", "rowexplorer"], "hasChildren": true, "size": { "width": 400, From d96bf29bef6d02e9f78aeba2fffacfd764faab70 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 9 Apr 2024 18:09:37 +0100 Subject: [PATCH 4/8] Add more search tests. --- .../src/api/routes/tests/search.spec.ts | 55 ++++++++++++++----- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/packages/server/src/api/routes/tests/search.spec.ts b/packages/server/src/api/routes/tests/search.spec.ts index a281d624dc..c06644fa3e 100644 --- a/packages/server/src/api/routes/tests/search.spec.ts +++ b/packages/server/src/api/routes/tests/search.spec.ts @@ -2,7 +2,13 @@ import { tableForDatasource } from "../../../tests/utilities/structures" import { DatabaseName, getDatasource } from "../../../integrations/tests/utils" import * as setup from "./utilities" -import { Datasource, FieldType, Table } from "@budibase/types" +import { + Datasource, + FieldType, + SearchFilter, + SearchFilters, + Table, +} from "@budibase/types" jest.unmock("mssql") @@ -53,22 +59,41 @@ describe.each([ ) }) - it("should return rows", async () => { - const rows = await Promise.all([ - config.api.row.save(table._id!, { name: "foo" }), - config.api.row.save(table._id!, { name: "bar" }), - ]) + describe("strings", () => { + interface StringSearchTest { + query: SearchFilters + expected: number[] + } - const result = await config.api.row.search(table._id!, { - tableId: table._id!, - query: {}, - }) + const stringSearchTests: StringSearchTest[] = [ + { query: {}, expected: [0, 1] }, + { query: { string: { name: "foo" } }, expected: [0] }, + { query: { fuzzy: { name: "oo" } }, expected: [0] }, + { query: { equal: { name: "foo" } }, expected: [0] }, + { query: { notEqual: { name: "foo" } }, expected: [1] }, + { query: { oneOf: { name: ["foo"] } }, expected: [0] }, + // { query: { contains: { name: "f" } }, expected: [0] }, + // { query: { notContains: { name: ["f"] } }, expected: [1] }, + // { query: { containsAny: { name: ["f"] } }, expected: [0] }, + ] - expect(result.rows).toEqual( - expect.arrayContaining([ - expect.objectContaining({ _id: rows[0]._id }), - expect.objectContaining({ _id: rows[1]._id }), - ]) + it.each(stringSearchTests)( + `should be able to run query: $query`, + async ({ query, expected }) => { + const rows = await Promise.all([ + config.api.row.save(table._id!, { name: "foo" }), + config.api.row.save(table._id!, { name: "bar" }), + ]) + + const result = await config.api.row.search(table._id!, { + tableId: table._id!, + query, + }) + + expect(result.rows.map(r => r._id)).toEqual( + expect.arrayContaining(expected.map(i => rows[i]._id)) + ) + } ) }) }) From a647e7ff0af56c6c4b6a4002055ed7da3ac281ec Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 9 Apr 2024 18:13:18 +0100 Subject: [PATCH 5/8] Fix lint. --- packages/server/src/api/routes/tests/search.spec.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/packages/server/src/api/routes/tests/search.spec.ts b/packages/server/src/api/routes/tests/search.spec.ts index c06644fa3e..24ba277bbf 100644 --- a/packages/server/src/api/routes/tests/search.spec.ts +++ b/packages/server/src/api/routes/tests/search.spec.ts @@ -2,13 +2,7 @@ import { tableForDatasource } from "../../../tests/utilities/structures" import { DatabaseName, getDatasource } from "../../../integrations/tests/utils" import * as setup from "./utilities" -import { - Datasource, - FieldType, - SearchFilter, - SearchFilters, - Table, -} from "@budibase/types" +import { Datasource, FieldType, SearchFilters, Table } from "@budibase/types" jest.unmock("mssql") From 06db50147ed580d0e8625aed9dc852f9d25a3499 Mon Sep 17 00:00:00 2001 From: Dean Date: Wed, 10 Apr 2024 09:20:54 +0100 Subject: [PATCH 6/8] PR Feedback --- packages/client/src/components/app/GridBlock.svelte | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/client/src/components/app/GridBlock.svelte b/packages/client/src/components/app/GridBlock.svelte index f6ef55f802..8be3893da0 100644 --- a/packages/client/src/components/app/GridBlock.svelte +++ b/packages/client/src/components/app/GridBlock.svelte @@ -111,7 +111,6 @@
Date: Wed, 10 Apr 2024 09:28:36 +0100 Subject: [PATCH 7/8] Lint --- packages/client/src/components/app/GridBlock.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/client/src/components/app/GridBlock.svelte b/packages/client/src/components/app/GridBlock.svelte index 8be3893da0..0ee2cf1487 100644 --- a/packages/client/src/components/app/GridBlock.svelte +++ b/packages/client/src/components/app/GridBlock.svelte @@ -49,7 +49,6 @@ metadata: { dataSource: table }, }, ] - $: customHeight = $component?.styles?.normal?.height // Provide additional data context for live binding eval export const getAdditionalDataContext = () => { From 245fa93bd29ecfc7230226ce58672bac37f400a7 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 10 Apr 2024 09:30:01 +0100 Subject: [PATCH 8/8] Make test cases a little cleaner. --- .../src/api/routes/tests/search.spec.ts | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/server/src/api/routes/tests/search.spec.ts b/packages/server/src/api/routes/tests/search.spec.ts index 24ba277bbf..2b08f9afc1 100644 --- a/packages/server/src/api/routes/tests/search.spec.ts +++ b/packages/server/src/api/routes/tests/search.spec.ts @@ -54,18 +54,20 @@ describe.each([ }) describe("strings", () => { + const rows = [{ name: "foo" }, { name: "bar" }] + interface StringSearchTest { query: SearchFilters - expected: number[] + expected: (typeof rows)[number][] } const stringSearchTests: StringSearchTest[] = [ - { query: {}, expected: [0, 1] }, - { query: { string: { name: "foo" } }, expected: [0] }, - { query: { fuzzy: { name: "oo" } }, expected: [0] }, - { query: { equal: { name: "foo" } }, expected: [0] }, - { query: { notEqual: { name: "foo" } }, expected: [1] }, - { query: { oneOf: { name: ["foo"] } }, expected: [0] }, + { query: {}, expected: rows }, + { query: { string: { name: "foo" } }, expected: [rows[0]] }, + { query: { fuzzy: { name: "oo" } }, expected: [rows[0]] }, + { query: { equal: { name: "foo" } }, expected: [rows[0]] }, + { query: { notEqual: { name: "foo" } }, expected: [rows[1]] }, + { query: { oneOf: { name: ["foo"] } }, expected: [rows[0]] }, // { query: { contains: { name: "f" } }, expected: [0] }, // { query: { notContains: { name: ["f"] } }, expected: [1] }, // { query: { containsAny: { name: ["f"] } }, expected: [0] }, @@ -74,18 +76,13 @@ describe.each([ it.each(stringSearchTests)( `should be able to run query: $query`, async ({ query, expected }) => { - const rows = await Promise.all([ - config.api.row.save(table._id!, { name: "foo" }), - config.api.row.save(table._id!, { name: "bar" }), - ]) - - const result = await config.api.row.search(table._id!, { + await Promise.all(rows.map(r => config.api.row.save(table._id!, r))) + const { rows: foundRows } = await config.api.row.search(table._id!, { tableId: table._id!, query, }) - - expect(result.rows.map(r => r._id)).toEqual( - expect.arrayContaining(expected.map(i => rows[i]._id)) + expect(foundRows).toEqual( + expect.arrayContaining(expected.map(r => expect.objectContaining(r))) ) } )