74 lines
2.3 KiB
JavaScript
74 lines
2.3 KiB
JavaScript
import {
|
|
setupApphierarchy,
|
|
basicAppHierarchyCreator_WithFields,
|
|
} from "./specHelpers"
|
|
import { keys, filter } from "lodash/fp"
|
|
import { $ } from "../src/common"
|
|
import { permission } from "../src/authApi/permissions"
|
|
|
|
describe("recordApi > delete", () => {
|
|
it("should remove every key in record's path", async () => {
|
|
const { recordApi } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
const record = recordApi.getNew("/customers", "customer")
|
|
record.surname = "Ledog"
|
|
|
|
await recordApi.save(record)
|
|
await recordApi.delete(record.key)
|
|
|
|
const remainingKeys = $(recordApi._storeHandle.data, [
|
|
keys,
|
|
filter(k => k.startsWith(record.key)),
|
|
])
|
|
|
|
expect(remainingKeys).toEqual([])
|
|
})
|
|
|
|
it("should remove every key in record's path, when record has child records", async () => {
|
|
const { recordApi } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
const record = recordApi.getNew("/customers", "customer")
|
|
record.surname = "Ledog"
|
|
|
|
await recordApi.save(record)
|
|
|
|
const invoice = recordApi.getNew(`${record.key}/invoices`, "invoice")
|
|
await recordApi.save(invoice)
|
|
|
|
await recordApi.delete(record.key)
|
|
|
|
const remainingKeys = $(recordApi._storeHandle.data, [
|
|
keys,
|
|
filter(k => k.startsWith(record.key)),
|
|
])
|
|
|
|
expect(remainingKeys).toEqual([])
|
|
})
|
|
|
|
it("should throw error when user user does not have permission", async () => {
|
|
const { recordApi, app, appHierarchy } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
const record = recordApi.getNew("/customers", "customer")
|
|
const created = await recordApi.save(record)
|
|
app.removePermission(
|
|
permission.deleteRecord.get(appHierarchy.customerRecord.nodeKey())
|
|
)
|
|
expect(recordApi.delete(created.key)).rejects.toThrow(/Unauthorized/)
|
|
})
|
|
|
|
it("should not depend on having any other permissions", async () => {
|
|
const { recordApi, app, appHierarchy } = await setupApphierarchy(
|
|
basicAppHierarchyCreator_WithFields
|
|
)
|
|
const record = recordApi.getNew("/customers", "customer")
|
|
const saved = await recordApi.save(record)
|
|
app.withOnlyThisPermission(
|
|
permission.deleteRecord.get(appHierarchy.customerRecord.nodeKey())
|
|
)
|
|
await recordApi.delete(saved.key)
|
|
})
|
|
})
|