Implement create custom recommendations
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
methodSlugFromTitle,
|
||||
templateMethodsFromBody,
|
||||
} from "../../lib/server/templateMethods";
|
||||
|
||||
describe("methodSlugFromTitle", () => {
|
||||
it.each([
|
||||
["Consensus Decision-Making", "consensus-decision-making"],
|
||||
["Consent (Sociocracy)", "consent-sociocracy"],
|
||||
["Mutual aid", "mutual-aid"],
|
||||
["Workers’ Cooperative", "workers-cooperative"],
|
||||
[" Multiple spaces ", "multiple-spaces"],
|
||||
])("%s -> %s", (input, expected) => {
|
||||
expect(methodSlugFromTitle(input)).toBe(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe("templateMethodsFromBody", () => {
|
||||
it("extracts (section, slug) pairs and skips Values", () => {
|
||||
const body = {
|
||||
sections: [
|
||||
{
|
||||
categoryName: "Values",
|
||||
entries: [{ title: "Mutuality" }],
|
||||
},
|
||||
{
|
||||
categoryName: "Communication",
|
||||
entries: [
|
||||
{ title: "In-Person Meetings" },
|
||||
{ title: "Loomio" },
|
||||
],
|
||||
},
|
||||
{
|
||||
categoryName: "Decision-making",
|
||||
entries: [{ title: "Consensus Decision-Making" }],
|
||||
},
|
||||
{
|
||||
categoryName: "Conflict management",
|
||||
entries: [{ title: "Restorative Justice" }],
|
||||
},
|
||||
{
|
||||
categoryName: "Membership",
|
||||
entries: [{ title: "Peer Sponsorship" }],
|
||||
},
|
||||
],
|
||||
};
|
||||
const result = templateMethodsFromBody(body);
|
||||
expect(result).toEqual([
|
||||
{ section: "communication", slug: "in-person-meetings" },
|
||||
{ section: "communication", slug: "loomio" },
|
||||
{ section: "decisionApproaches", slug: "consensus-decision-making" },
|
||||
{ section: "conflictManagement", slug: "restorative-justice" },
|
||||
{ section: "membership", slug: "peer-sponsorship" },
|
||||
]);
|
||||
});
|
||||
|
||||
it("dedupes within a template", () => {
|
||||
const body = {
|
||||
sections: [
|
||||
{
|
||||
categoryName: "Communication",
|
||||
entries: [{ title: "Loomio" }, { title: "Loomio" }],
|
||||
},
|
||||
],
|
||||
};
|
||||
expect(templateMethodsFromBody(body)).toEqual([
|
||||
{ section: "communication", slug: "loomio" },
|
||||
]);
|
||||
});
|
||||
|
||||
it("returns [] for malformed bodies", () => {
|
||||
expect(templateMethodsFromBody(null)).toEqual([]);
|
||||
expect(templateMethodsFromBody({})).toEqual([]);
|
||||
expect(templateMethodsFromBody({ sections: "nope" })).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user