diff --git a/packages/server/src/api/routes/tests/row.spec.ts b/packages/server/src/api/routes/tests/row.spec.ts
index fa72776f30..0193ff095d 100644
--- a/packages/server/src/api/routes/tests/row.spec.ts
+++ b/packages/server/src/api/routes/tests/row.spec.ts
@@ -1094,11 +1094,20 @@ describe.each([
describe("view search", () => {
const viewSchema = { age: { visible: true }, name: { visible: true } }
- function userTable(): Table {
+ async function userTable(): Promise
{
return {
- name: "user",
- type: "user",
+ name: `users_${generator.guid()}`,
+ type: "table",
+ primary: ["id"],
schema: {
+ id: {
+ type: FieldType.AUTO,
+ name: "id",
+ autocolumn: true,
+ constraints: {
+ presence: true,
+ },
+ },
name: {
type: FieldType.STRING,
name: "name",
@@ -1110,11 +1119,12 @@ describe.each([
constraints: {},
},
},
+ ...(await tableDatasourceConfig()),
}
}
- it("returns table rows from view", async () => {
- const table = await config.createTable(userTable())
+ it.only("returns table rows from view", async () => {
+ const table = await config.createTable(await userTable())
const rows = []
for (let i = 0; i < 10; i++) {
rows.push(await config.createRow({ tableId: table._id }))
@@ -1130,7 +1140,7 @@ describe.each([
})
it("searching respects the view filters", async () => {
- const table = await config.createTable(userTable())
+ const table = await config.createTable(await userTable())
const expectedRows = []
for (let i = 0; i < 10; i++)
await config.createRow({
@@ -1235,7 +1245,7 @@ describe.each([
it.each(sortTestOptions)(
"allow sorting (%s)",
async (sortParams, expected) => {
- await config.createTable(userTable())
+ await config.createTable(await userTable())
const users = [
{ name: "Alice", age: 25 },
{ name: "Bob", age: 30 },
@@ -1266,7 +1276,7 @@ describe.each([
it.each(sortTestOptions)(
"allow override the default view sorting (%s)",
async (sortParams, expected) => {
- await config.createTable(userTable())
+ await config.createTable(await userTable())
const users = [
{ name: "Alice", age: 25 },
{ name: "Bob", age: 30 },
@@ -1307,7 +1317,7 @@ describe.each([
)
it("when schema is defined, defined columns and row attributes are returned", async () => {
- const table = await config.createTable(userTable())
+ const table = await config.createTable(await userTable())
const rows = []
for (let i = 0; i < 10; i++) {
rows.push(
@@ -1337,7 +1347,7 @@ describe.each([
})
it("views without data can be returned", async () => {
- await config.createTable(userTable())
+ await config.createTable(await userTable())
const createViewResponse = await config.api.viewV2.create()
const response = await config.api.viewV2.search(createViewResponse.id)
@@ -1346,7 +1356,7 @@ describe.each([
})
it("respects the limit parameter", async () => {
- const table = await config.createTable(userTable())
+ const table = await config.createTable(await userTable())
const rows = []
for (let i = 0; i < 10; i++) {
rows.push(await config.createRow({ tableId: table._id }))
@@ -1363,7 +1373,7 @@ describe.each([
})
it("can handle pagination", async () => {
- const table = await config.createTable(userTable())
+ const table = await config.createTable(await userTable())
const rows = []
for (let i = 0; i < 10; i++) {
rows.push(await config.createRow({ tableId: table._id }))
@@ -1428,7 +1438,7 @@ describe.each([
let tableId: string
beforeAll(async () => {
- const table = await config.createTable(userTable())
+ const table = await config.createTable(await userTable())
const rows = []
for (let i = 0; i < 10; i++) {
rows.push(await config.createRow({ tableId: table._id }))
diff --git a/packages/server/src/tests/utilities/TestConfiguration.ts b/packages/server/src/tests/utilities/TestConfiguration.ts
index 72a8b9a146..030a08cee7 100644
--- a/packages/server/src/tests/utilities/TestConfiguration.ts
+++ b/packages/server/src/tests/utilities/TestConfiguration.ts
@@ -51,6 +51,8 @@ import {
UserRoles,
Automation,
View,
+ FieldType,
+ RelationshipType,
} from "@budibase/types"
import API from "./api"
@@ -76,7 +78,6 @@ class TestConfiguration {
globalUserId: any
userMetadataId: any
table?: Table
- linkedTable: any
automation: any
datasource?: Datasource
tenantId?: string
@@ -559,25 +560,34 @@ class TestConfiguration {
return this._req(null, { tableId }, controllers.table.find)
}
- async createLinkedTable(relationshipType?: string, links: any = ["link"]) {
+ async createLinkedTable(
+ config?: Table,
+ relationshipType = RelationshipType.ONE_TO_MANY,
+ links: any = ["link"]
+ ) {
if (!this.table) {
throw "Must have created a table first."
}
- const tableConfig: any = basicTable()
+ const tableConfig = config || basicTable()
tableConfig.primaryDisplay = "name"
for (let link of links) {
tableConfig.schema[link] = {
- type: "link",
+ type: FieldType.LINK,
fieldName: link,
tableId: this.table._id,
name: link,
- }
- if (relationshipType) {
- tableConfig.schema[link].relationshipType = relationshipType
+ relationshipType,
}
}
- const linkedTable = await this.createTable(tableConfig)
- this.linkedTable = linkedTable
+
+ if (this.datasource && !tableConfig.sourceId) {
+ tableConfig.sourceId = this.datasource._id
+ if (this.datasource.plus) {
+ tableConfig.type = "external"
+ }
+ }
+
+ const linkedTable = await this.api.table.create(tableConfig)
return linkedTable
}