Table tests to ts
This commit is contained in:
parent
d12d6f5bef
commit
46cb7c7117
|
@ -1,12 +1,13 @@
|
||||||
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
import { checkBuilderEndpoint } from "./utilities/TestFunctions"
|
||||||
const setup = require("./utilities")
|
import * as setup from "./utilities"
|
||||||
const { basicTable } = setup.structures
|
const { basicTable } = setup.structures
|
||||||
const { events, context } = require("@budibase/backend-core")
|
import { events, context } from "@budibase/backend-core"
|
||||||
|
import { FieldType, Table } from "@budibase/types"
|
||||||
|
|
||||||
describe("/tables", () => {
|
describe("/tables", () => {
|
||||||
let request = setup.getRequest()
|
let request = setup.getRequest()
|
||||||
let config = setup.getConfig()
|
let config = setup.getConfig()
|
||||||
let appId
|
let appId: string
|
||||||
|
|
||||||
afterAll(setup.afterAll)
|
afterAll(setup.afterAll)
|
||||||
|
|
||||||
|
@ -16,12 +17,11 @@ describe("/tables", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("create", () => {
|
describe("create", () => {
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest.clearAllMocks()
|
jest.clearAllMocks()
|
||||||
})
|
})
|
||||||
|
|
||||||
const createTable = (table) => {
|
const createTable = (table?: Table) => {
|
||||||
if (!table) {
|
if (!table) {
|
||||||
table = basicTable()
|
table = basicTable()
|
||||||
}
|
}
|
||||||
|
@ -29,15 +29,16 @@ describe("/tables", () => {
|
||||||
.post(`/api/tables`)
|
.post(`/api/tables`)
|
||||||
.send(table)
|
.send(table)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
it("returns a success message when the table is successfully created", async () => {
|
it("returns a success message when the table is successfully created", async () => {
|
||||||
const res = await createTable()
|
const res = await createTable()
|
||||||
|
|
||||||
expect(res.res.statusMessage).toEqual("Table TestTable saved successfully.")
|
expect((res as any).res.statusMessage).toEqual(
|
||||||
|
"Table TestTable saved successfully."
|
||||||
|
)
|
||||||
expect(res.body.name).toEqual("TestTable")
|
expect(res.body.name).toEqual("TestTable")
|
||||||
expect(events.table.created).toBeCalledTimes(1)
|
expect(events.table.created).toBeCalledTimes(1)
|
||||||
expect(events.table.created).toBeCalledWith(res.body)
|
expect(events.table.created).toBeCalledWith(res.body)
|
||||||
|
@ -45,7 +46,7 @@ describe("/tables", () => {
|
||||||
|
|
||||||
it("creates a table via data import", async () => {
|
it("creates a table via data import", async () => {
|
||||||
const table = basicTable()
|
const table = basicTable()
|
||||||
table.rows = [{ name: 'test-name', description: 'test-desc' }]
|
table.rows = [{ name: "test-name", description: "test-desc" }]
|
||||||
|
|
||||||
const res = await createTable(table)
|
const res = await createTable(table)
|
||||||
|
|
||||||
|
@ -62,7 +63,7 @@ describe("/tables", () => {
|
||||||
config,
|
config,
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: `/api/tables`,
|
url: `/api/tables`,
|
||||||
body: basicTable()
|
body: basicTable(),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -75,7 +76,7 @@ describe("/tables", () => {
|
||||||
.post(`/api/tables`)
|
.post(`/api/tables`)
|
||||||
.send(testTable)
|
.send(testTable)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
|
|
||||||
expect(events.table.updated).toBeCalledTimes(1)
|
expect(events.table.updated).toBeCalledTimes(1)
|
||||||
|
@ -94,10 +95,10 @@ describe("/tables", () => {
|
||||||
const testRow = await request
|
const testRow = await request
|
||||||
.post(`/api/${testTable._id}/rows`)
|
.post(`/api/${testTable._id}/rows`)
|
||||||
.send({
|
.send({
|
||||||
name: "test"
|
name: "test",
|
||||||
})
|
})
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
|
|
||||||
const updatedTable = await request
|
const updatedTable = await request
|
||||||
|
@ -109,22 +110,24 @@ describe("/tables", () => {
|
||||||
key: "name",
|
key: "name",
|
||||||
_rename: {
|
_rename: {
|
||||||
old: "name",
|
old: "name",
|
||||||
updated: "updatedName"
|
updated: "updatedName",
|
||||||
},
|
},
|
||||||
schema: {
|
schema: {
|
||||||
updatedName: { type: "string" }
|
updatedName: { type: "string" },
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
expect(updatedTable.res.statusMessage).toEqual("Table TestTable saved successfully.")
|
expect((updatedTable as any).res.statusMessage).toEqual(
|
||||||
|
"Table TestTable saved successfully."
|
||||||
|
)
|
||||||
expect(updatedTable.body.name).toEqual("TestTable")
|
expect(updatedTable.body.name).toEqual("TestTable")
|
||||||
|
|
||||||
const res = await request
|
const res = await request
|
||||||
.get(`/api/${testTable._id}/rows/${testRow.body._id}`)
|
.get(`/api/${testTable._id}/rows/${testRow.body._id}`)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
|
|
||||||
expect(res.body.updatedName).toEqual("test")
|
expect(res.body.updatedName).toEqual("test")
|
||||||
|
@ -140,7 +143,7 @@ describe("/tables", () => {
|
||||||
_id: "ta_users",
|
_id: "ta_users",
|
||||||
})
|
})
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
expect(res.body.schema.email).toBeDefined()
|
expect(res.body.schema.email).toBeDefined()
|
||||||
expect(res.body.schema.roleId).toBeDefined()
|
expect(res.body.schema.roleId).toBeDefined()
|
||||||
|
@ -153,7 +156,7 @@ describe("/tables", () => {
|
||||||
const table = await config.createTable()
|
const table = await config.createTable()
|
||||||
const importRequest = {
|
const importRequest = {
|
||||||
schema: table.schema,
|
schema: table.schema,
|
||||||
rows: [{ name: 'test-name', description: 'test-desc' }]
|
rows: [{ name: "test-name", description: "test-desc" }],
|
||||||
}
|
}
|
||||||
|
|
||||||
jest.clearAllMocks()
|
jest.clearAllMocks()
|
||||||
|
@ -162,20 +165,23 @@ describe("/tables", () => {
|
||||||
.post(`/api/tables/${table._id}/import`)
|
.post(`/api/tables/${table._id}/import`)
|
||||||
.send(importRequest)
|
.send(importRequest)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
|
|
||||||
expect(events.table.created).not.toHaveBeenCalled()
|
expect(events.table.created).not.toHaveBeenCalled()
|
||||||
expect(events.rows.imported).toBeCalledTimes(1)
|
expect(events.rows.imported).toBeCalledTimes(1)
|
||||||
expect(events.rows.imported).toBeCalledWith(expect.objectContaining({
|
expect(events.rows.imported).toBeCalledWith(
|
||||||
|
expect.objectContaining({
|
||||||
name: "TestTable",
|
name: "TestTable",
|
||||||
_id: table._id
|
_id: table._id,
|
||||||
}), 1)
|
}),
|
||||||
|
1
|
||||||
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("fetch", () => {
|
describe("fetch", () => {
|
||||||
let testTable
|
let testTable: Table
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
testTable = await config.createTable(testTable)
|
testTable = await config.createTable(testTable)
|
||||||
|
@ -189,7 +195,7 @@ describe("/tables", () => {
|
||||||
const res = await request
|
const res = await request
|
||||||
.get(`/api/tables`)
|
.get(`/api/tables`)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
const fetchedTable = res.body[0]
|
const fetchedTable = res.body[0]
|
||||||
expect(fetchedTable.name).toEqual(testTable.name)
|
expect(fetchedTable.name).toEqual(testTable.name)
|
||||||
|
@ -216,7 +222,7 @@ describe("/tables", () => {
|
||||||
.post(`/api/tables`)
|
.post(`/api/tables`)
|
||||||
.send(table)
|
.send(table)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
expect(res.body._id).toBeDefined()
|
expect(res.body._id).toBeDefined()
|
||||||
expect(res.body._rev).toBeDefined()
|
expect(res.body._rev).toBeDefined()
|
||||||
|
@ -231,7 +237,7 @@ describe("/tables", () => {
|
||||||
_rev: res.body._rev,
|
_rev: res.body._rev,
|
||||||
})
|
})
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
// shouldn't have created a new index
|
// shouldn't have created a new index
|
||||||
expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)
|
expect((await db.getIndexes()).total_rows).toEqual(indexCount + 1)
|
||||||
|
@ -240,7 +246,7 @@ describe("/tables", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("destroy", () => {
|
describe("destroy", () => {
|
||||||
let testTable
|
let testTable: Table
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
testTable = await config.createTable(testTable)
|
testTable = await config.createTable(testTable)
|
||||||
|
@ -254,40 +260,44 @@ describe("/tables", () => {
|
||||||
const res = await request
|
const res = await request
|
||||||
.delete(`/api/tables/${testTable._id}/${testTable._rev}`)
|
.delete(`/api/tables/${testTable._id}/${testTable._rev}`)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
expect(res.body.message).toEqual(`Table ${testTable._id} deleted.`)
|
expect(res.body.message).toEqual(`Table ${testTable._id} deleted.`)
|
||||||
expect(events.table.deleted).toBeCalledTimes(1)
|
expect(events.table.deleted).toBeCalledTimes(1)
|
||||||
expect(events.table.deleted).toBeCalledWith({ ...testTable, tableId: testTable._id })
|
expect(events.table.deleted).toBeCalledWith({
|
||||||
|
...testTable,
|
||||||
|
tableId: testTable._id,
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it("deletes linked references to the table after deletion", async () => {
|
it("deletes linked references to the table after deletion", async () => {
|
||||||
const linkedTable = await config.createTable({
|
const linkedTable = await config.createTable({
|
||||||
name: "LinkedTable",
|
name: "LinkedTable",
|
||||||
type: "table",
|
type: "table",
|
||||||
key: "name",
|
|
||||||
schema: {
|
schema: {
|
||||||
name: {
|
name: {
|
||||||
type: "string",
|
type: FieldType.STRING,
|
||||||
|
name: "name",
|
||||||
constraints: {
|
constraints: {
|
||||||
type: "string",
|
type: "string",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
TestTable: {
|
TestTable: {
|
||||||
type: "link",
|
type: FieldType.LINK,
|
||||||
|
name: "TestTable",
|
||||||
fieldName: "TestTable",
|
fieldName: "TestTable",
|
||||||
tableId: testTable._id,
|
tableId: testTable._id,
|
||||||
constraints: {
|
constraints: {
|
||||||
type: "array"
|
type: "array",
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const res = await request
|
const res = await request
|
||||||
.delete(`/api/tables/${testTable._id}/${testTable._rev}`)
|
.delete(`/api/tables/${testTable._id}/${testTable._rev}`)
|
||||||
.set(config.defaultHeaders())
|
.set(config.defaultHeaders())
|
||||||
.expect('Content-Type', /json/)
|
.expect("Content-Type", /json/)
|
||||||
.expect(200)
|
.expect(200)
|
||||||
expect(res.body.message).toEqual(`Table ${testTable._id} deleted.`)
|
expect(res.body.message).toEqual(`Table ${testTable._id} deleted.`)
|
||||||
const dependentTable = await config.getTable(linkedTable._id)
|
const dependentTable = await config.getTable(linkedTable._id)
|
|
@ -16,23 +16,26 @@ import {
|
||||||
AutomationTrigger,
|
AutomationTrigger,
|
||||||
AutomationTriggerStepId,
|
AutomationTriggerStepId,
|
||||||
Datasource,
|
Datasource,
|
||||||
|
FieldType,
|
||||||
SourceName,
|
SourceName,
|
||||||
|
Table,
|
||||||
} from "@budibase/types"
|
} from "@budibase/types"
|
||||||
|
|
||||||
export function basicTable() {
|
export function basicTable(): Table {
|
||||||
return {
|
return {
|
||||||
name: "TestTable",
|
name: "TestTable",
|
||||||
type: "table",
|
type: "table",
|
||||||
key: "name",
|
|
||||||
schema: {
|
schema: {
|
||||||
name: {
|
name: {
|
||||||
type: "string",
|
type: FieldType.STRING,
|
||||||
|
name: "name",
|
||||||
constraints: {
|
constraints: {
|
||||||
type: "string",
|
type: "string",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
description: {
|
description: {
|
||||||
type: "string",
|
type: FieldType.STRING,
|
||||||
|
name: "description",
|
||||||
constraints: {
|
constraints: {
|
||||||
type: "string",
|
type: "string",
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue