You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

42 lines
1.2 KiB

import { describe, expect, test } from "bun:test";
import { GuestCommentValidationError } from "../../utils/post-comment-guest";
import { resolveGuestFields } from "./guest-fields";
describe("resolveGuestFields", () => {
test("guest non-anonymous without email throws", () => {
expect(() =>
resolveGuestFields({
viewerPresent: false,
guestIsAnonymous: false,
}),
).toThrow(GuestCommentValidationError);
});
test("guest anonymous with empty email passes", () => {
expect(
resolveGuestFields({
viewerPresent: false,
guestEmail: "",
guestIsAnonymous: true,
}),
).toEqual({ guestEmail: null, guestIsAnonymous: true });
});
test("logged-in viewer ignores guest fields", () => {
expect(
resolveGuestFields({
viewerPresent: true,
guestEmail: "guest@example.com",
guestIsAnonymous: true,
}),
).toEqual({ guestEmail: null, guestIsAnonymous: false });
});
test("guest with undefined anonymous flag defaults to non-anonymous and requires email", () => {
expect(() =>
resolveGuestFields({
viewerPresent: false,
}),
).toThrow(GuestCommentValidationError);
});
});