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

95 lines
3.6 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);
});
});