Reducing the boilerplate needed around setting up a test case.
This commit is contained in:
parent
110ae15fb3
commit
0878d692c2
|
@ -8,14 +8,13 @@ const {
|
||||||
|
|
||||||
exports.fetch = async function(ctx) {
|
exports.fetch = async function(ctx) {
|
||||||
const database = new CouchDB(ctx.user.appId)
|
const database = new CouchDB(ctx.user.appId)
|
||||||
const datasources = (
|
ctx.body = (
|
||||||
await database.allDocs(
|
await database.allDocs(
|
||||||
getDatasourceParams(null, {
|
getDatasourceParams(null, {
|
||||||
include_docs: true,
|
include_docs: true,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
).rows.map(row => row.doc)
|
).rows.map(row => row.doc)
|
||||||
ctx.body = datasources
|
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.save = async function(ctx) {
|
exports.save = async function(ctx) {
|
||||||
|
|
|
@ -1,24 +1,17 @@
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
|
||||||
const { clearAllApps, checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
const { clearAllApps, checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
||||||
|
const setup = require("./utilities")
|
||||||
|
|
||||||
describe("/applications", () => {
|
describe("/applications", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let config
|
let config = setup.getConfig()
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await clearAllApps()
|
await clearAllApps()
|
||||||
await config.init()
|
await config.init()
|
||||||
})
|
})
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("create", () => {
|
describe("create", () => {
|
||||||
it("returns a success message when the application is successfully created", async () => {
|
it("returns a success message when the application is successfully created", async () => {
|
||||||
const res = await request
|
const res = await request
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
|
||||||
const {
|
const {
|
||||||
checkBuilderEndpoint,
|
checkBuilderEndpoint,
|
||||||
getAllTableRows,
|
getAllTableRows,
|
||||||
clearAllAutomations,
|
clearAllAutomations,
|
||||||
} = require("./utilities/TestFunctions")
|
} = require("./utilities/TestFunctions")
|
||||||
const { basicAutomation } = require("./utilities/structures")
|
const { basicAutomation } = require("./utilities/structures")
|
||||||
const { delay } = require("./utilities")
|
const setup = require("./utilities")
|
||||||
|
|
||||||
const MAX_RETRIES = 4
|
const MAX_RETRIES = 4
|
||||||
|
|
||||||
|
@ -14,23 +13,16 @@ let TRIGGER_DEFINITIONS = {}
|
||||||
let LOGIC_DEFINITIONS = {}
|
let LOGIC_DEFINITIONS = {}
|
||||||
|
|
||||||
describe("/automations", () => {
|
describe("/automations", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let config
|
let config = setup.getConfig()
|
||||||
let automation
|
let automation
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await config.init()
|
await config.init()
|
||||||
})
|
})
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
const triggerWorkflow = async automation => {
|
const triggerWorkflow = async automation => {
|
||||||
return await request
|
return await request
|
||||||
.post(`/api/automations/${automation._id}/trigger`)
|
.post(`/api/automations/${automation._id}/trigger`)
|
||||||
|
@ -133,7 +125,7 @@ describe("/automations", () => {
|
||||||
automation.definition.trigger.inputs.tableId = table._id
|
automation.definition.trigger.inputs.tableId = table._id
|
||||||
automation.definition.steps[0].inputs.row.tableId = table._id
|
automation.definition.steps[0].inputs.row.tableId = table._id
|
||||||
automation = await config.createAutomation(automation)
|
automation = await config.createAutomation(automation)
|
||||||
await delay(500)
|
await setup.delay(500)
|
||||||
const res = await triggerWorkflow(automation)
|
const res = await triggerWorkflow(automation)
|
||||||
// this looks a bit mad but we don't actually have a way to wait for a response from the automation to
|
// this looks a bit mad but we don't actually have a way to wait for a response from the automation to
|
||||||
// know that it has finished all of its actions - this is currently the best way
|
// know that it has finished all of its actions - this is currently the best way
|
||||||
|
@ -142,7 +134,7 @@ describe("/automations", () => {
|
||||||
for (let tries = 0; tries < MAX_RETRIES; tries++) {
|
for (let tries = 0; tries < MAX_RETRIES; tries++) {
|
||||||
expect(res.body.message).toEqual(`Automation ${automation._id} has been triggered.`)
|
expect(res.body.message).toEqual(`Automation ${automation._id} has been triggered.`)
|
||||||
expect(res.body.automation.name).toEqual(automation.name)
|
expect(res.body.automation.name).toEqual(automation.name)
|
||||||
await delay(500)
|
await setup.delay(500)
|
||||||
let elements = await getAllTableRows(config)
|
let elements = await getAllTableRows(config)
|
||||||
// don't test it unless there are values to test
|
// don't test it unless there are values to test
|
||||||
if (elements.length > 1) {
|
if (elements.length > 1) {
|
||||||
|
|
|
@ -1,23 +1,16 @@
|
||||||
let TestConfig = require("./utilities/TestConfiguration")
|
|
||||||
let { basicDatasource } = require("./utilities/structures")
|
let { basicDatasource } = require("./utilities/structures")
|
||||||
let { checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
let { checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
||||||
|
let setup = require("./utilities")
|
||||||
|
|
||||||
describe("/datasources", () => {
|
describe("/datasources", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let config
|
let config = setup.getConfig()
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await config.init()
|
await config.init()
|
||||||
});
|
})
|
||||||
|
|
||||||
describe("create", () => {
|
describe("create", () => {
|
||||||
it("should create a new datasource", async () => {
|
it("should create a new datasource", async () => {
|
||||||
|
|
|
@ -1,25 +1,18 @@
|
||||||
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
|
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
const setup = require("./utilities")
|
||||||
const { basicRow } = require("./utilities/structures")
|
const { basicRow } = require("./utilities/structures")
|
||||||
|
|
||||||
const HIGHER_ROLE_ID = BUILTIN_ROLE_IDS.BASIC
|
const HIGHER_ROLE_ID = BUILTIN_ROLE_IDS.BASIC
|
||||||
const STD_ROLE_ID = BUILTIN_ROLE_IDS.PUBLIC
|
const STD_ROLE_ID = BUILTIN_ROLE_IDS.PUBLIC
|
||||||
|
|
||||||
describe("/permission", () => {
|
describe("/permission", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
|
let config = setup.getConfig()
|
||||||
let table
|
let table
|
||||||
let perms
|
let perms
|
||||||
let row
|
let row
|
||||||
let config
|
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await config.init()
|
await config.init()
|
||||||
|
|
|
@ -1,19 +1,12 @@
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
|
||||||
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
||||||
const { basicQuery } = require("./utilities/structures")
|
const { basicQuery } = require("./utilities/structures")
|
||||||
|
const setup = require("./utilities")
|
||||||
|
|
||||||
describe("/queries", () => {
|
describe("/queries", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let config
|
let config = setup.getConfig()
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await config.init()
|
await config.init()
|
||||||
|
|
|
@ -3,20 +3,13 @@ const {
|
||||||
BUILTIN_PERMISSION_IDS,
|
BUILTIN_PERMISSION_IDS,
|
||||||
} = require("../../../utilities/security/permissions")
|
} = require("../../../utilities/security/permissions")
|
||||||
const { basicRole } = require("./utilities/structures")
|
const { basicRole } = require("./utilities/structures")
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
const setup = require("./utilities")
|
||||||
|
|
||||||
describe("/roles", () => {
|
describe("/roles", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let config
|
let config = setup.getConfig()
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.close()
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await config.init()
|
await config.init()
|
||||||
|
|
|
@ -1,28 +1,18 @@
|
||||||
const { outputProcessing } = require("../../../utilities/rowProcessor")
|
const { outputProcessing } = require("../../../utilities/rowProcessor")
|
||||||
const env = require("../../../environment")
|
const env = require("../../../environment")
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
|
||||||
const { basicRow } = require("./utilities/structures")
|
const { basicRow } = require("./utilities/structures")
|
||||||
|
const setup = require("./utilities")
|
||||||
|
|
||||||
describe("/rows", () => {
|
describe("/rows", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let appId
|
let config = setup.getConfig()
|
||||||
let table
|
let table
|
||||||
let row
|
let row
|
||||||
let app
|
|
||||||
let config
|
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
app = await config.init()
|
await config.init()
|
||||||
appId = app.instance._id
|
|
||||||
table = await config.createTable()
|
table = await config.createTable()
|
||||||
row = basicRow(table._id)
|
row = basicRow(table._id)
|
||||||
})
|
})
|
||||||
|
@ -272,7 +262,7 @@ describe("/rows", () => {
|
||||||
link: [{_id: firstRow._id}],
|
link: [{_id: firstRow._id}],
|
||||||
tableId: table._id,
|
tableId: table._id,
|
||||||
})
|
})
|
||||||
const enriched = await outputProcessing(appId, table, [secondRow])
|
const enriched = await outputProcessing(config.getAppId(), table, [secondRow])
|
||||||
expect(enriched[0].link.length).toBe(1)
|
expect(enriched[0].link.length).toBe(1)
|
||||||
expect(enriched[0].link[0]._id).toBe(firstRow._id)
|
expect(enriched[0].link[0]._id).toBe(firstRow._id)
|
||||||
expect(enriched[0].link[0].primaryDisplay).toBe("Test Contact")
|
expect(enriched[0].link[0].primaryDisplay).toBe("Test Contact")
|
||||||
|
@ -292,8 +282,8 @@ describe("/rows", () => {
|
||||||
// the environment needs configured for this
|
// the environment needs configured for this
|
||||||
env.CLOUD = 1
|
env.CLOUD = 1
|
||||||
env.SELF_HOSTED = 1
|
env.SELF_HOSTED = 1
|
||||||
const enriched = await outputProcessing(appId, table, [row])
|
const enriched = await outputProcessing(config.getAppId(), table, [row])
|
||||||
expect(enriched[0].attachment[0].url).toBe(`/app-assets/assets/${appId}/test/thing`)
|
expect(enriched[0].attachment[0].url).toBe(`/app-assets/assets/${config.getAppId()}/test/thing`)
|
||||||
// remove env config
|
// remove env config
|
||||||
env.CLOUD = undefined
|
env.CLOUD = undefined
|
||||||
env.SELF_HOSTED = undefined
|
env.SELF_HOSTED = undefined
|
||||||
|
|
|
@ -1,18 +1,11 @@
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
|
||||||
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
const { checkBuilderEndpoint } = require("./utilities/TestFunctions")
|
||||||
|
const setup = require("./utilities")
|
||||||
|
|
||||||
describe("/tables", () => {
|
describe("/tables", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let config
|
let config = setup.getConfig()
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await config.init()
|
await config.init()
|
||||||
|
|
|
@ -1,31 +1,18 @@
|
||||||
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
|
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
|
||||||
const { checkPermissionsEndpoint } = require("./utilities/TestFunctions")
|
const { checkPermissionsEndpoint } = require("./utilities/TestFunctions")
|
||||||
const { cloneDeep } = require("lodash/fp")
|
const { basicUser } = require("./utilities/structures")
|
||||||
|
const setup = require("./utilities")
|
||||||
const baseBody = {
|
|
||||||
email: "bill@bill.com",
|
|
||||||
password: "yeeooo",
|
|
||||||
roleId: BUILTIN_ROLE_IDS.POWER,
|
|
||||||
}
|
|
||||||
|
|
||||||
describe("/users", () => {
|
describe("/users", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let config
|
let config = setup.getConfig()
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await config.init()
|
await config.init()
|
||||||
})
|
})
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("fetch", () => {
|
describe("fetch", () => {
|
||||||
it("returns a list of users from an instance db", async () => {
|
it("returns a list of users from an instance db", async () => {
|
||||||
await config.createUser("brenda@brenda.com", "brendas_password")
|
await config.createUser("brenda@brenda.com", "brendas_password")
|
||||||
|
@ -56,7 +43,7 @@ describe("/users", () => {
|
||||||
|
|
||||||
describe("create", () => {
|
describe("create", () => {
|
||||||
it("returns a success message when a user is successfully created", async () => {
|
it("returns a success message when a user is successfully created", async () => {
|
||||||
const body = cloneDeep(baseBody)
|
const body = basicUser(BUILTIN_ROLE_IDS.POWER)
|
||||||
body.email = "bill@budibase.com"
|
body.email = "bill@budibase.com"
|
||||||
const res = await request
|
const res = await request
|
||||||
.post(`/api/users`)
|
.post(`/api/users`)
|
||||||
|
@ -70,7 +57,7 @@ describe("/users", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should apply authorization to endpoint", async () => {
|
it("should apply authorization to endpoint", async () => {
|
||||||
const body = cloneDeep(baseBody)
|
const body = basicUser(BUILTIN_ROLE_IDS.POWER)
|
||||||
body.email = "brandNewUser@user.com"
|
body.email = "brandNewUser@user.com"
|
||||||
await checkPermissionsEndpoint({
|
await checkPermissionsEndpoint({
|
||||||
config,
|
config,
|
||||||
|
|
|
@ -24,6 +24,14 @@ class TestConfiguration {
|
||||||
this.appId = null
|
this.appId = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getRequest() {
|
||||||
|
return this.request
|
||||||
|
}
|
||||||
|
|
||||||
|
getAppId() {
|
||||||
|
return this.appId
|
||||||
|
}
|
||||||
|
|
||||||
async _req(config, params, controlFunc) {
|
async _req(config, params, controlFunc) {
|
||||||
const request = {}
|
const request = {}
|
||||||
// fake cookies, we don't need them
|
// fake cookies, we don't need them
|
||||||
|
|
|
@ -1,5 +1,32 @@
|
||||||
const TEST_CLIENT_ID = "test-client-id"
|
const TestConfig = require("./TestConfiguration")
|
||||||
|
|
||||||
exports.TEST_CLIENT_ID = TEST_CLIENT_ID
|
|
||||||
|
|
||||||
exports.delay = ms => new Promise(resolve => setTimeout(resolve, ms))
|
exports.delay = ms => new Promise(resolve => setTimeout(resolve, ms))
|
||||||
|
|
||||||
|
let request, config
|
||||||
|
|
||||||
|
exports.beforeAll = () => {
|
||||||
|
config = new TestConfig()
|
||||||
|
request = config.getRequest()
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.afterAll = () => {
|
||||||
|
if (config) {
|
||||||
|
config.end()
|
||||||
|
}
|
||||||
|
request = null
|
||||||
|
config = null
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getRequest = () => {
|
||||||
|
if (!request) {
|
||||||
|
exports.beforeAll()
|
||||||
|
}
|
||||||
|
return request
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getConfig = () => {
|
||||||
|
if (!config) {
|
||||||
|
exports.beforeAll()
|
||||||
|
}
|
||||||
|
return config
|
||||||
|
}
|
||||||
|
|
|
@ -1,23 +1,16 @@
|
||||||
const TestConfig = require("./utilities/TestConfiguration")
|
const setup = require("./utilities")
|
||||||
|
|
||||||
describe("/views", () => {
|
describe("/views", () => {
|
||||||
let request
|
let request = setup.getRequest()
|
||||||
let config
|
let config = setup.getConfig()
|
||||||
let table
|
let table
|
||||||
|
|
||||||
beforeAll(async () => {
|
afterAll(setup.afterAll)
|
||||||
config = new TestConfig()
|
|
||||||
request = config.request
|
|
||||||
})
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await config.init()
|
await config.init()
|
||||||
})
|
})
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
config.end()
|
|
||||||
})
|
|
||||||
|
|
||||||
describe("create", () => {
|
describe("create", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
table = await config.createTable()
|
table = await config.createTable()
|
||||||
|
|
Loading…
Reference in New Issue