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