86 lines
2.8 KiB
JavaScript
86 lines
2.8 KiB
JavaScript
import {
|
|
setupApphierarchy,
|
|
basicAppHierarchyCreator_WithFields,
|
|
stubEventHandler,
|
|
basicAppHierarchyCreator_WithFields_AndIndexes,
|
|
} from "./specHelpers"
|
|
import { canDeleteIndex } from "../src/templateApi/canDeleteIndex"
|
|
import { canDeleteRecord } from "../src/templateApi/canDeleteRecord"
|
|
|
|
describe("canDeleteIndex", () => {
|
|
it("should return no errors if deltion is valid", async () => {
|
|
const { appHierarchy } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
|
|
const partnerIndex = appHierarchy.root.indexes.find(i => i.name === "partner_index")
|
|
|
|
const result = canDeleteIndex(partnerIndex)
|
|
|
|
expect(result.canDelete).toBe(true)
|
|
expect(result.errors).toEqual([])
|
|
})
|
|
|
|
it("should return errors if index is a lookup for a reference field", async () => {
|
|
const { appHierarchy } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
|
|
const customerIndex = appHierarchy.root.indexes.find(i => i.name === "customer_index")
|
|
|
|
const result = canDeleteIndex(customerIndex)
|
|
|
|
expect(result.canDelete).toBe(false)
|
|
expect(result.errors.length).toBe(1)
|
|
})
|
|
|
|
it("should return errors if index is a manyToOne index for a reference field", async () => {
|
|
const { appHierarchy } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
|
|
const referredToCustomersIndex = appHierarchy.customerRecord.indexes.find(i => i.name === "referredToCustomers")
|
|
|
|
const result = canDeleteIndex(referredToCustomersIndex)
|
|
|
|
expect(result.canDelete).toBe(false)
|
|
expect(result.errors.length).toBe(1)
|
|
})
|
|
})
|
|
|
|
|
|
describe("canDeleteRecord", () => {
|
|
it("should return no errors when deletion is valid", async () => {
|
|
const { appHierarchy } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
|
|
appHierarchy.root.indexes = appHierarchy.root.indexes.filter(i => !i.allowedModelNodeIds.includes(appHierarchy.customerRecord.nodeId))
|
|
const result = canDeleteRecord(appHierarchy.customerRecord)
|
|
|
|
expect(result.canDelete).toBe(true)
|
|
expect(result.errors).toEqual([])
|
|
})
|
|
|
|
it("should return errors when record is referenced by hierarchal index", async () => {
|
|
const { appHierarchy } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
|
|
const result = canDeleteRecord(appHierarchy.customerRecord)
|
|
|
|
expect(result.canDelete).toBe(false)
|
|
expect(result.errors.some(e => e.includes("customer_index"))).toBe(true)
|
|
})
|
|
|
|
it("should return errors when record has a child which cannot be deleted", async () => {
|
|
const { appHierarchy } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields_AndIndexes
|
|
)
|
|
|
|
const result = canDeleteRecord(appHierarchy.customerRecord)
|
|
|
|
expect(result.canDelete).toBe(false)
|
|
expect(result.errors.some(e => e.includes("Outstanding Invoices"))).toBe(true)
|
|
})
|
|
}) |