an archetype flow can be customized for one agent
This commit is contained in:
parent
f2e735a98f
commit
5443c1c9ba
1 changed files with 153 additions and 34 deletions
|
|
@ -6,6 +6,7 @@ import {
|
|||
blankNode,
|
||||
DEFAULT_LIMITS,
|
||||
depthOf,
|
||||
disabledOnSave,
|
||||
duplicateFlow,
|
||||
heightBelow,
|
||||
isDirty,
|
||||
|
|
@ -428,6 +429,55 @@ test("seedFlow copies an archetype flow by its key, sending to its one member",
|
|||
assert.ok(recipients(members).every((to) => to === "members"));
|
||||
});
|
||||
|
||||
test("seedFlow customizes an archetype flow for one agent, and the save adds that agent's switch-off", () => {
|
||||
const members = {
|
||||
...flow(),
|
||||
id: "new-issues",
|
||||
name: "New issues",
|
||||
nodes: flow().nodes.map((n) =>
|
||||
n.kind === "todo" ? { ...n, to: "members" } : n,
|
||||
),
|
||||
};
|
||||
const key = "archetype:triage/new-issues";
|
||||
const view = {
|
||||
revision: 1,
|
||||
disabled_builtins: ["closed"],
|
||||
builtins: [],
|
||||
flows: [],
|
||||
archetype_flows: [
|
||||
{ archetype: "triage", key, flow: members, members: ["alice", "bob"] },
|
||||
],
|
||||
};
|
||||
const todos = (f) => f.nodes.filter((n) => n.kind === "todo");
|
||||
const mine = seedFlow(view, key, "bob");
|
||||
assert.equal(mine.id, NEW_FLOW_ID);
|
||||
assert.equal(mine.name, "New issues (bob)");
|
||||
assert.ok(todos(mine).length > 0, "control: it has a todo");
|
||||
assert.ok(todos(mine).every((n) => n.to.agent === "bob"));
|
||||
// Without an agent, two members leave the recipient empty for the save to refuse.
|
||||
assert.ok(todos(seedFlow(view, key)).every((n) => n.to.agent === ""));
|
||||
// The save adds the one agent's key, sorted in, once; plain drafts add none.
|
||||
assert.deepEqual(disabledOnSave(["closed"], key, "bob"), [
|
||||
"archetype:triage/new-issues@bob",
|
||||
"closed",
|
||||
]);
|
||||
assert.deepEqual(
|
||||
disabledOnSave(["archetype:triage/new-issues@bob"], key, "bob"),
|
||||
["archetype:triage/new-issues@bob"],
|
||||
);
|
||||
assert.deepEqual(disabledOnSave(["closed"], key, null), ["closed"]);
|
||||
assert.deepEqual(disabledOnSave(["closed"], null, "bob"), ["closed"]);
|
||||
const sent = JSON.parse(
|
||||
saveRequest(
|
||||
view,
|
||||
[savedAs(view, mine)],
|
||||
disabledOnSave(view.disabled_builtins, key, "bob"),
|
||||
).body,
|
||||
);
|
||||
assert.deepEqual(sent.disabled_builtins, [key + "@bob", "closed"]);
|
||||
assert.equal(sent.flows[0].id, "new-issues-bob");
|
||||
});
|
||||
|
||||
test("savedAs takes the id from the name, clear of every saved id", () => {
|
||||
const view = {
|
||||
revision: 1,
|
||||
|
|
|
|||
Loading…
Reference in a new issue