mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-24 15:49:42 +02:00
feat: Additional Household Permissions (#4158)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
This commit is contained in:
parent
b1820f9b23
commit
fd0257c1b8
37 changed files with 690 additions and 185 deletions
|
@ -1,5 +1,7 @@
|
|||
import { describe, test, expect } from "vitest";
|
||||
import { ref, Ref } from "@nuxtjs/composition-api";
|
||||
import { useRecipePermissions } from "./use-recipe-permissions";
|
||||
import { HouseholdSummary } from "~/lib/api/types/household";
|
||||
import { Recipe } from "~/lib/api/types/recipe";
|
||||
import { UserOut } from "~/lib/api/types/user";
|
||||
|
||||
|
@ -32,35 +34,76 @@ describe("test use recipe permissions", () => {
|
|||
...overrides,
|
||||
});
|
||||
|
||||
const createRecipeHousehold = (overrides: Partial<HouseholdSummary>, lockRecipeEdits = false): Ref<HouseholdSummary> => (
|
||||
ref({
|
||||
id: commonHouseholdId,
|
||||
groupId: commonGroupId,
|
||||
name: "My Household",
|
||||
slug: "my-household",
|
||||
preferences: {
|
||||
id: "my-household-preferences-id",
|
||||
lockRecipeEditsFromOtherHouseholds: lockRecipeEdits,
|
||||
},
|
||||
...overrides,
|
||||
})
|
||||
);
|
||||
|
||||
test("when user is null, cannot edit", () => {
|
||||
const result = useRecipePermissions(createRecipe({}), null);
|
||||
const result = useRecipePermissions(createRecipe({}), createRecipeHousehold({}), null);
|
||||
expect(result.canEditRecipe.value).toBe(false);
|
||||
});
|
||||
|
||||
test("when user is recipe owner, can edit", () => {
|
||||
const result = useRecipePermissions(createRecipe({}), createUser({}));
|
||||
const result = useRecipePermissions(createRecipe({}), ref(), createUser({}));
|
||||
expect(result.canEditRecipe.value).toBe(true);
|
||||
});
|
||||
|
||||
test("when user is not recipe owner, is correct group and household, and recipe is unlocked, can edit", () => {
|
||||
const result = useRecipePermissions(
|
||||
createRecipe({}),
|
||||
createUser({ id: "other-user-id" }),
|
||||
);
|
||||
expect(result.canEditRecipe.value).toBe(true);
|
||||
});
|
||||
test(
|
||||
"when user is not recipe owner, is correct group and household, recipe is unlocked, and household is unlocked, can edit",
|
||||
() => {
|
||||
const result = useRecipePermissions(
|
||||
createRecipe({}),
|
||||
createRecipeHousehold({}),
|
||||
createUser({ id: "other-user-id" }),
|
||||
);
|
||||
expect(result.canEditRecipe.value).toBe(true);
|
||||
}
|
||||
);
|
||||
|
||||
test(
|
||||
"when user is not recipe owner, is correct group and household, recipe is unlocked, but household is locked, can edit",
|
||||
() => {
|
||||
const result = useRecipePermissions(
|
||||
createRecipe({}),
|
||||
createRecipeHousehold({}, true),
|
||||
createUser({ id: "other-user-id" }),
|
||||
);
|
||||
expect(result.canEditRecipe.value).toBe(true);
|
||||
}
|
||||
);
|
||||
|
||||
test("when user is not recipe owner, and user is other group, cannot edit", () => {
|
||||
const result = useRecipePermissions(
|
||||
createRecipe({}),
|
||||
createRecipeHousehold({}),
|
||||
createUser({ id: "other-user-id", groupId: "other-group-id"}),
|
||||
);
|
||||
expect(result.canEditRecipe.value).toBe(false);
|
||||
});
|
||||
|
||||
test("when user is not recipe owner, and user is other household, cannot edit", () => {
|
||||
test("when user is not recipe owner, and user is other household, and household is unlocked, can edit", () => {
|
||||
const result = useRecipePermissions(
|
||||
createRecipe({}),
|
||||
createRecipeHousehold({}),
|
||||
createUser({ id: "other-user-id", householdId: "other-household-id" }),
|
||||
);
|
||||
expect(result.canEditRecipe.value).toBe(true);
|
||||
});
|
||||
|
||||
test("when user is not recipe owner, and user is other household, and household is locked, cannot edit", () => {
|
||||
const result = useRecipePermissions(
|
||||
createRecipe({}),
|
||||
createRecipeHousehold({}, true),
|
||||
createUser({ id: "other-user-id", householdId: "other-household-id" }),
|
||||
);
|
||||
expect(result.canEditRecipe.value).toBe(false);
|
||||
|
@ -69,13 +112,14 @@ describe("test use recipe permissions", () => {
|
|||
test("when user is not recipe owner, and recipe is locked, cannot edit", () => {
|
||||
const result = useRecipePermissions(
|
||||
createRecipe({}, true),
|
||||
createRecipeHousehold({}),
|
||||
createUser({ id: "other-user-id"}),
|
||||
);
|
||||
expect(result.canEditRecipe.value).toBe(false);
|
||||
});
|
||||
|
||||
test("when user is recipe owner, and recipe is locked, can edit", () => {
|
||||
const result = useRecipePermissions(createRecipe({}, true), createUser({}));
|
||||
test("when user is recipe owner, and recipe is locked, and household is locked, can edit", () => {
|
||||
const result = useRecipePermissions(createRecipe({}, true), createRecipeHousehold({}, true), createUser({}));
|
||||
expect(result.canEditRecipe.value).toBe(true);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue