mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-11 05:42:19 +00:00
test: add record settings contract
- Cover record-keyed DTO and cache behavior\n- Pin actor identity separately from the active record
This commit is contained in:
1 parent
c3125078b9
commit
1eb0d22285
2 files changed
+83
No files matched your search
@@ -0,0 +1,48 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import {
|
||||
assertRecordSettingsAccess,
|
||||
type RecordSettingsAccess,
|
||||
} from "@/lib/record-settings/access";
|
||||
import { toRecordSettingsDto } from "@/lib/record-settings/dto";
|
||||
import { recordSettingsKeys } from "@/lib/query-keys";
|
||||
|
||||
describe("record settings contract", () => {
|
||||
it("names the target record in both the DTO and cache key", () => {
|
||||
const dto = toRecordSettingsDto({
|
||||
id: "record-1",
|
||||
name: "Managed profile",
|
||||
locale: "de",
|
||||
timezone: "Europe/Berlin",
|
||||
recordKind: "managed",
|
||||
});
|
||||
|
||||
expect(dto).toEqual({
|
||||
record: {
|
||||
id: "record-1",
|
||||
displayName: "Managed profile",
|
||||
locale: "de",
|
||||
timezone: "Europe/Berlin",
|
||||
kind: "managed",
|
||||
},
|
||||
});
|
||||
expect(recordSettingsKeys.detail("record-1")).toEqual([
|
||||
"record-settings",
|
||||
"record-1",
|
||||
"detail",
|
||||
]);
|
||||
});
|
||||
|
||||
it("does not let an adult MANAGE grant use Guardian-only configuration", () => {
|
||||
const access: RecordSettingsAccess = {
|
||||
actorId: "adult-manager",
|
||||
recordId: "managed-record",
|
||||
recordKind: "managed",
|
||||
relationship: "adult-manager",
|
||||
};
|
||||
|
||||
expect(() => assertRecordSettingsAccess(access, "guardian")).toThrow(
|
||||
"Guardian configuration is unavailable for this record",
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user