budibase/packages/core/test/recordApi.getContext.spec.js

102 lines
3.3 KiB
JavaScript

import {
setupApphierarchy,
basicAppHierarchyCreator_WithFields,
getNewFieldAndAdd,
} from "./specHelpers"
import { joinKey } from "../src/common"
import { isFunction, isArray } from "lodash"
describe("recordApi > getContext", () => {
it("'referenceExists()' should return true when the reference is in the index", async () => {
const { recordApi, appHierarchy } = await setupApphierarchy(
basicAppHierarchyCreator_WithFields
)
const customer = recordApi.getNew(
appHierarchy.customerRecord.collectionNodeKey(),
"customer"
)
customer.isalive = true
await recordApi.save(customer)
const invoiceCollectionKey = joinKey(customer.key, "invoices")
const invoice = recordApi.getNew(invoiceCollectionKey, "invoice")
const context = await recordApi.getContext(invoice.key)
expect(isFunction(context.referenceExists)).toBeTruthy()
const result = await context.referenceExists("customer", customer.key)
expect(result).toBe(true)
})
it("'referenceExists()' should return false when the reference is not in the index", async () => {
const { recordApi, appHierarchy } = await setupApphierarchy(
basicAppHierarchyCreator_WithFields
)
const customer = recordApi.getNew(
appHierarchy.customerRecord.collectionNodeKey(),
"customer"
)
customer.isalive = true
await recordApi.save(customer)
const invoiceCollectionKey = joinKey(customer.key, "invoices")
const invoice = recordApi.getNew(invoiceCollectionKey, "invoice")
const context = await recordApi.getContext(invoice.key)
const result = await context.referenceExists("customer", "not a key")
expect(result).toBe(false)
})
it("referenceOptions() should return list of indexed {key, value}", async () => {
const { recordApi, appHierarchy } = await setupApphierarchy(
basicAppHierarchyCreator_WithFields
)
const customer = recordApi.getNew(
appHierarchy.customerRecord.collectionNodeKey(),
"customer"
)
customer.surname = "Leedog"
customer.isalive = true
await recordApi.save(customer)
const invoiceCollectionKey = joinKey(customer.key, "invoices")
const invoice = recordApi.getNew(invoiceCollectionKey, "invoice")
const context = await recordApi.getContext(invoice.key)
expect(isFunction(context.referenceOptions)).toBeTruthy()
const result = await context.referenceOptions("customer")
expect(isArray(result)).toBeTruthy()
expect(result[0].key).toBe(customer.key)
expect(result[0].value).toBe(customer.surname)
})
it("referenceOptions() should return an empty list when no records are in the index", async () => {
const { recordApi, appHierarchy } = await setupApphierarchy(
basicAppHierarchyCreator_WithFields
)
const customer = recordApi.getNew(
appHierarchy.customerRecord.collectionNodeKey(),
"customer"
)
customer.surname = "Leedog"
customer.isalive = false
await recordApi.save(customer)
const invoiceCollectionKey = joinKey(customer.key, "invoices")
const invoice = recordApi.getNew(invoiceCollectionKey, "invoice")
const context = await recordApi.getContext(invoice.key)
expect(isFunction(context.referenceOptions)).toBeTruthy()
const result = await context.referenceOptions("customer")
expect(isArray(result)).toBeTruthy()
expect(result.length).toBe(0)
})
})