kink-discovery / frontend /partner-groups.test.mjs
Perplexed7675's picture
Sync from kink_cli (Docker Space)
2c11dc3 verified
Raw
History Blame Contribute Delete
2.06 kB
import test from "node:test";
import assert from "node:assert/strict";
import { preferredPartnerGroupId, resolvedPartnerGroups } from "./partner-groups.js";
test("preferredPartnerGroupId picks a real partner group over a solo row", () => {
const groups = [
{ id: "solo", member_ids: [], participant_ids: ["u1"] },
{ id: "pair", member_ids: ["u2"], participant_ids: ["u1", "u2"] },
];
assert.equal(preferredPartnerGroupId(groups), "pair");
});
test("preferredPartnerGroupId preserves a valid explicit selection", () => {
const groups = [
{ id: "solo", member_ids: [] },
{ id: "pair", member_ids: ["u2"] },
];
assert.equal(preferredPartnerGroupId(groups, "solo"), "solo");
});
test("preferredPartnerGroupId falls back to first group when no partner group exists", () => {
assert.equal(preferredPartnerGroupId([{ id: "solo", member_ids: [] }]), "solo");
assert.equal(preferredPartnerGroupId([]), "");
});
test("resolvedPartnerGroups prefers non-empty user.partner_groups over stale empty groups query", () => {
const user = { partner_groups: [{ id: "g1", name: "Together" }] };
const groupsQuery = { items: [] };
assert.deepEqual(resolvedPartnerGroups(user, groupsQuery), [{ id: "g1", name: "Together" }]);
});
test("resolvedPartnerGroups uses groups GET when user list not loaded yet", () => {
const groupsQuery = { items: [{ id: "g2" }] };
assert.deepEqual(resolvedPartnerGroups(null, groupsQuery), [{ id: "g2" }]);
});
test("resolvedPartnerGroups returns an empty array for empty or malformed sources", () => {
assert.deepEqual(resolvedPartnerGroups({ partner_groups: [] }, { items: [] }), []);
assert.deepEqual(resolvedPartnerGroups({ partner_groups: "bad" }, { items: "bad" }), []);
});
test("preferredPartnerGroupId ignores stale selections and empty member placeholders", () => {
const groups = [
{ id: "solo", member_ids: [] },
{ id: "empty-member", member_ids: [""] },
{ id: "pair", member_ids: ["u2"] },
];
assert.equal(preferredPartnerGroupId(groups, "missing"), "pair");
});