2020-02-03 10:24:25 +01:00
|
|
|
import {
|
|
|
|
setupApphierarchy,
|
|
|
|
basicAppHierarchyCreator_WithFields,
|
|
|
|
} from "./specHelpers"
|
|
|
|
import { $, splitKey } from "../src/common"
|
|
|
|
import { keys, filter } from "lodash/fp"
|
|
|
|
import { permission } from "../src/authApi/permissions"
|
2019-07-15 08:12:52 +02:00
|
|
|
|
|
|
|
describe("collectionApi > delete", () => {
|
2020-02-03 10:24:25 +01:00
|
|
|
it("should remove every key in collection's path", async () => {
|
|
|
|
const { recordApi, collectionApi } = await setupApphierarchy(
|
|
|
|
basicAppHierarchyCreator_WithFields
|
|
|
|
)
|
|
|
|
const record1 = recordApi.getNew("/customers", "customer")
|
|
|
|
record1.surname = "Ledog"
|
|
|
|
|
|
|
|
await recordApi.save(record1)
|
|
|
|
|
|
|
|
const record2 = recordApi.getNew("/customers", "customer")
|
|
|
|
record2.surname = "Zeecat"
|
|
|
|
await recordApi.save(record2)
|
|
|
|
|
|
|
|
const childRecord = recordApi.getNew(`${record1.key}/invoices`, "invoice")
|
|
|
|
|
|
|
|
await recordApi.save(childRecord)
|
|
|
|
|
|
|
|
await collectionApi.delete("/customers")
|
|
|
|
|
|
|
|
const remainingKeys = $(recordApi._storeHandle.data, [
|
|
|
|
keys,
|
|
|
|
filter(k => splitKey(k)[0] === "customers"),
|
|
|
|
])
|
|
|
|
|
|
|
|
expect(remainingKeys).toEqual([])
|
|
|
|
})
|
|
|
|
|
|
|
|
it("should not delete anything that is not in its path", async () => {
|
|
|
|
const { recordApi, collectionApi } = await setupApphierarchy(
|
|
|
|
basicAppHierarchyCreator_WithFields
|
|
|
|
)
|
|
|
|
const customer = recordApi.getNew("/customers", "customer")
|
|
|
|
customer.surname = "Ledog"
|
|
|
|
|
|
|
|
await recordApi.save(customer)
|
|
|
|
|
|
|
|
const partner = recordApi.getNew("/partners", "partner")
|
|
|
|
await recordApi.save(partner)
|
|
|
|
|
|
|
|
const allKeys = keys(recordApi._storeHandle.data)
|
|
|
|
const customerKeys = $(allKeys, [
|
|
|
|
filter(k => splitKey(k)[0] === "customers"),
|
|
|
|
])
|
|
|
|
|
|
|
|
const expectedRemainingKeys = allKeys.length - customerKeys.length
|
|
|
|
|
|
|
|
await collectionApi.delete("/customers")
|
|
|
|
|
|
|
|
const remainingKeys = keys(recordApi._storeHandle.data)
|
|
|
|
expect(remainingKeys.length).toBe(expectedRemainingKeys)
|
|
|
|
})
|
|
|
|
|
|
|
|
it("should throw error when user user does not have permission", async () => {
|
|
|
|
const { collectionApi, app } = await setupApphierarchy(
|
|
|
|
basicAppHierarchyCreator_WithFields
|
|
|
|
)
|
|
|
|
app.removePermission(permission.manageCollection.get("/customers"))
|
|
|
|
expect(collectionApi.delete("/customers")).rejects.toThrow(/Unauthorized/)
|
|
|
|
})
|
|
|
|
|
|
|
|
it("should not depend on having any other permissions", async () => {
|
|
|
|
const { collectionApi, app } = await setupApphierarchy(
|
|
|
|
basicAppHierarchyCreator_WithFields
|
|
|
|
)
|
|
|
|
app.withOnlyThisPermission(permission.manageCollection.get("/customers"))
|
|
|
|
await collectionApi.delete("/customers")
|
|
|
|
})
|
|
|
|
})
|