budibase/packages/datastores/tests/records.js

70 lines
1.8 KiB
JavaScript

import { action, iterateActionTimes } from "./helpers"
import { isUndefined, union } from "lodash"
const createClient = (apis, getState) => async i => {
const client = apis.recordApi.getNew("/clients", "client")
client.FamilyName = "Humperdink"
client.Address1 = `${i} Mainitucetts Avenue`
client.Address2 = "Longerton Road South"
client.Address3 = "Chalico City"
client.Address4 = "Northern Humranistan"
client.Postcode = "BY71 5FR"
client.CreatedDate = new Date()
const state = getState()
if (isUndefined(state.clientKeys)) state.clientKeys = []
state.clientKeys.push(client.key())
await apis.recordApi.save(client)
return client.key()
}
const listClients = (apis, getState) => async () => {
const clients = await apis.viewApi.listItems("/clients/default")
const state = getState()
if (state.clientKeys.length !== clients.length) {
throw new Error(
"list CLients, expected " +
state.clientKeys.length.toString() +
" clients, actual " +
clients.length.toString()
)
}
}
export default apis => {
const state = {}
const getState = () => state
const noOfRecords = 10000
const recordsPerIteration = 10
const noOfIterations = noOfRecords / recordsPerIteration
const actionsInOneIteration = () => [
action(
"Create client",
createClient(apis, getState),
iterateActionTimes(recordsPerIteration)
),
action("List Clients", listClients(apis, getState)),
]
let actions = []
for (let index = 0; index < noOfIterations; index++) {
actions = union(actions, actionsInOneIteration())
}
let actionIndex = 0
return () => {
if (actionIndex == actions.length) {
return { done: true }
}
const result = { action: actions[actionIndex], done: false }
actionIndex++
return result
}
}