This commit is contained in:
Adria Navarro 2024-08-29 11:19:40 +02:00
parent b784479c8f
commit e443b00a69
1 changed files with 58 additions and 41 deletions

View File

@ -41,6 +41,7 @@ import {
JsonFieldSubType, JsonFieldSubType,
RowExportFormat, RowExportFormat,
FeatureFlag, FeatureFlag,
RelationSchemaField,
} from "@budibase/types" } from "@budibase/types"
import { generator, mocks } from "@budibase/backend-core/tests" import { generator, mocks } from "@budibase/backend-core/tests"
import _, { merge } from "lodash" import _, { merge } from "lodash"
@ -1233,7 +1234,7 @@ describe.each([
}) })
it.each([{ not: "valid" }, { rows: 123 }, "invalid"])( it.each([{ not: "valid" }, { rows: 123 }, "invalid"])(
"Should ignore malformed/invalid delete request: %s", "should ignore malformed/invalid delete request: %s",
async (request: any) => { async (request: any) => {
const rowUsage = await getRowUsage() const rowUsage = await getRowUsage()
@ -2433,7 +2434,7 @@ describe.each([
!isMSSQL && !isMSSQL &&
!isOracle && !isOracle &&
describe("relationships", () => { describe("relationships", () => {
let tableId: string let viewId: string
let auxData: Row[] = [] let auxData: Row[] = []
@ -2520,7 +2521,6 @@ describe.each([
tableId: auxTableId, tableId: auxTableId,
fieldName: "fk_relWithEmptySchema", fieldName: "fk_relWithEmptySchema",
constraints: { presence: true }, constraints: { presence: true },
schema: {},
}, },
relWithFullSchema: { relWithFullSchema: {
name: "relWithFullSchema", name: "relWithFullSchema",
@ -2529,10 +2529,6 @@ describe.each([
tableId: auxTableId, tableId: auxTableId,
fieldName: "fk_relWithFullSchema", fieldName: "fk_relWithFullSchema",
constraints: { presence: true }, constraints: { presence: true },
schema: Object.keys(auxTable.schema).reduce(
(acc, c) => ({ ...acc, [c]: { visible: true } }),
{}
),
}, },
relWithHalfSchema: { relWithHalfSchema: {
name: "relWithHalfSchema", name: "relWithHalfSchema",
@ -2541,10 +2537,6 @@ describe.each([
tableId: auxTableId, tableId: auxTableId,
fieldName: "fk_relWithHalfSchema", fieldName: "fk_relWithHalfSchema",
constraints: { presence: true }, constraints: { presence: true },
schema: {
name: { visible: true },
age: { visible: false, readonly: true },
},
}, },
relWithIllegalSchema: { relWithIllegalSchema: {
name: "relWithIllegalSchema", name: "relWithIllegalSchema",
@ -2553,7 +2545,41 @@ describe.each([
tableId: auxTableId, tableId: auxTableId,
fieldName: "fk_relWithIllegalSchema", fieldName: "fk_relWithIllegalSchema",
constraints: { presence: true }, constraints: { presence: true },
},
},
})
)
const tableId = table._id!
const view = await config.api.viewV2.create({
name: generator.guid(),
tableId,
schema: { schema: {
title: {
visible: true,
},
relWithNoSchema: {
visible: true,
},
relWithEmptySchema: {
visible: true,
columns: {},
},
relWithFullSchema: {
visible: true,
columns: Object.keys(auxTable.schema).reduce<
Record<string, RelationSchemaField>
>((acc, c) => ({ ...acc, [c]: { visible: true } }), {}),
},
relWithHalfSchema: {
visible: true,
columns: {
name: { visible: true },
age: { visible: false, readonly: true },
},
},
relWithIllegalSchema: {
visible: true,
columns: {
name: { visible: true }, name: { visible: true },
address: { visible: true }, address: { visible: true },
unexisting: { visible: true }, unexisting: { visible: true },
@ -2561,8 +2587,8 @@ describe.each([
}, },
}, },
}) })
)
tableId = table._id! viewId = view.id
}) })
afterAll(() => { afterAll(() => {
@ -2570,38 +2596,29 @@ describe.each([
}) })
const testScenarios: [string, (row: Row) => Promise<Row> | Row][] = [ const testScenarios: [string, (row: Row) => Promise<Row> | Row][] = [
["get row", (row: Row) => config.api.row.get(tableId, row._id!)], // ["get row", (row: Row) => config.api.row.get(viewId, row._id!)],
// [
// "fetch",
// async (row: Row) => {
// const rows = await config.api.row.fetch(tableId)
// return rows.find(r => r._id === row._id)
// },
// ],
// [
// "search",
// async (row: Row) => {
// const { rows } = await config.api.row.search(tableId)
// return rows.find(r => r._id === row._id)
// },
// ],
[ [
"fetch", "from view search",
async (row: Row) => { async (row: Row) => {
const rows = await config.api.row.fetch(tableId) const { rows } = await config.api.viewV2.search(viewId)
return rows.find(r => r._id === row._id)
},
],
[
"search",
async (row: Row) => {
const { rows } = await config.api.row.search(tableId)
return rows.find(r => r._id === row._id)
},
],
[
"from view",
async (row: Row) => {
const table = await config.api.table.get(tableId)
const view = await config.api.viewV2.create({
name: generator.guid(),
tableId,
schema: Object.keys(table.schema).reduce(
(acc, c) => ({ ...acc, [c]: { visible: true } }),
{}
),
})
const { rows } = await config.api.viewV2.search(view.id)
return rows.find(r => r._id === row._id!) return rows.find(r => r._id === row._id!)
}, },
], ],
["from original saved row", (row: Row) => row], // ["from original saved row", (row: Row) => row],
] ]
it.each(testScenarios)( it.each(testScenarios)(
@ -2609,7 +2626,7 @@ describe.each([
async (__, retrieveDelegate) => { async (__, retrieveDelegate) => {
const otherRows = _.sampleSize(auxData, 5) const otherRows = _.sampleSize(auxData, 5)
const row = await config.api.row.save(tableId, { const row = await config.api.row.save(viewId, {
title: generator.word(), title: generator.word(),
relWithNoSchema: [otherRows[0]], relWithNoSchema: [otherRows[0]],
relWithEmptySchema: [otherRows[1]], relWithEmptySchema: [otherRows[1]],