@owlmeans/server-planning 0.1.18-rc.12 → 0.1.18-rc.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -9
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/server-planning/SKILL.md +76 -14
- package/build/actions/execute.d.ts +10 -2
- package/build/actions/execute.d.ts.map +1 -1
- package/build/actions/execute.js +28 -4
- package/build/actions/execute.js.map +1 -1
- package/build/actions/schemas.d.ts +26 -3
- package/build/actions/schemas.d.ts.map +1 -1
- package/build/actions/schemas.js +63 -7
- package/build/actions/schemas.js.map +1 -1
- package/build/conformance/assert.d.ts +20 -0
- package/build/conformance/assert.d.ts.map +1 -0
- package/build/conformance/assert.js +54 -0
- package/build/conformance/assert.js.map +1 -0
- package/build/conformance/cases.d.ts +22 -0
- package/build/conformance/cases.d.ts.map +1 -0
- package/build/conformance/cases.js +392 -0
- package/build/conformance/cases.js.map +1 -0
- package/build/conformance/fixtures.d.ts +31 -0
- package/build/conformance/fixtures.d.ts.map +1 -0
- package/build/conformance/fixtures.js +147 -0
- package/build/conformance/fixtures.js.map +1 -0
- package/build/conformance/index.d.ts +10 -0
- package/build/conformance/index.d.ts.map +1 -0
- package/build/conformance/index.js +10 -0
- package/build/conformance/index.js.map +1 -0
- package/build/consts.d.ts +5 -0
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +5 -0
- package/build/consts.js.map +1 -1
- package/build/definitions.d.ts +33 -0
- package/build/definitions.d.ts.map +1 -0
- package/build/definitions.js +211 -0
- package/build/definitions.js.map +1 -0
- package/build/executor/resolve.d.ts +16 -3
- package/build/executor/resolve.d.ts.map +1 -1
- package/build/executor/resolve.js +68 -11
- package/build/executor/resolve.js.map +1 -1
- package/build/executor/validate.d.ts.map +1 -1
- package/build/executor/validate.js +11 -11
- package/build/executor/validate.js.map +1 -1
- package/build/executor.d.ts.map +1 -1
- package/build/executor.js +2 -3
- package/build/executor.js.map +1 -1
- package/build/facade.d.ts +14 -1
- package/build/facade.d.ts.map +1 -1
- package/build/facade.js +92 -18
- package/build/facade.js.map +1 -1
- package/build/helper.d.ts +3 -2
- package/build/helper.d.ts.map +1 -1
- package/build/helper.js +7 -3
- package/build/helper.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/service.d.ts +10 -1
- package/build/service.d.ts.map +1 -1
- package/build/service.js +9 -0
- package/build/service.js.map +1 -1
- package/build/store/composite.d.ts +1 -0
- package/build/store/composite.d.ts.map +1 -1
- package/build/store/composite.js +3 -0
- package/build/store/composite.js.map +1 -1
- package/build/store/fold.d.ts +3 -1
- package/build/store/fold.d.ts.map +1 -1
- package/build/store/fold.js +8 -2
- package/build/store/fold.js.map +1 -1
- package/build/store/memory.d.ts +12 -0
- package/build/store/memory.d.ts.map +1 -1
- package/build/store/memory.js +0 -0
- package/build/store/memory.js.map +1 -1
- package/build/store/types.d.ts +15 -1
- package/build/store/types.d.ts.map +1 -1
- package/build/types.d.ts +37 -0
- package/build/types.d.ts.map +1 -1
- package/build/utils/scope.d.ts +28 -1
- package/build/utils/scope.d.ts.map +1 -1
- package/build/utils/scope.js +54 -15
- package/build/utils/scope.js.map +1 -1
- package/package.json +15 -8
- package/src/actions/execute.ts +36 -8
- package/src/actions/schemas.ts +81 -9
- package/src/conformance/assert.ts +59 -0
- package/src/conformance/cases.ts +483 -0
- package/src/conformance/fixtures.ts +168 -0
- package/src/conformance/index.ts +9 -0
- package/src/consts.ts +6 -0
- package/src/definitions.ts +282 -0
- package/src/executor/resolve.ts +84 -14
- package/src/executor/validate.ts +13 -11
- package/src/executor.ts +2 -3
- package/src/facade.ts +106 -19
- package/src/helper.ts +7 -3
- package/src/index.ts +1 -0
- package/src/service.ts +23 -1
- package/src/store/composite.ts +3 -0
- package/src/store/fold.ts +8 -2
- package/src/store/memory.ts +0 -0
- package/src/store/types.ts +16 -1
- package/src/types.ts +41 -0
- package/src/utils/scope.ts +75 -16
- package/tests/access.spec.ts +160 -0
- package/tests/conformance.spec.ts +47 -0
- package/tests/entrypoints.spec.ts +5 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
import { uuid } from '@owlmeans/basic-ids';
|
|
2
|
+
import { CardTypeNotAllowed, CommitState, IntrinsicStatus, PlanningSchemaKind, RelationshipRefused, SchemaConflict, SchemaInUse, SchemaInvalid, SchemaOrigin, SchemaSealed, SpecificationFormat, TransitionAction, UnknownWorkcardType, WorkcardConflict, WorkcardKind, WorkcardNotFound, } from '@owlmeans/planning';
|
|
3
|
+
import { check, rejects, same, sameSet } from './assert.js';
|
|
4
|
+
import { BOOK_TYPE, LIBRARY, PERIODICAL_TYPE, createBook, createBranch, transit } from './fixtures.js';
|
|
5
|
+
/** A fresh organization per case, so cases never see each other's cards on a shared database. */
|
|
6
|
+
const organization = () => `conformance-${uuid()}`;
|
|
7
|
+
const ids = async (planning, query) => (await planning.cards.list({ ...query, size: 0 })).items.map(card => card.id);
|
|
8
|
+
const execute = async (planning, exec) => (await planning.execute(exec, { wait: true })).card ?? null;
|
|
9
|
+
const cases = [
|
|
10
|
+
{
|
|
11
|
+
name: 'folds transitions in seq order and settles each one once',
|
|
12
|
+
run: async ({ facade }) => {
|
|
13
|
+
const planning = facade(organization());
|
|
14
|
+
const events = [];
|
|
15
|
+
const unsubscribe = await planning.commits.subscribe(event => { events.push(event); });
|
|
16
|
+
try {
|
|
17
|
+
const branch = await createBranch(planning);
|
|
18
|
+
const book = await createBook(planning, branch.id, 'Winter poems');
|
|
19
|
+
await execute(planning, { card: book.id, action: TransitionAction.Update, changes: { title: 'Winter verses' } });
|
|
20
|
+
await transit(planning, book.id, 'lend');
|
|
21
|
+
const card = await planning.cards.get(book.id);
|
|
22
|
+
same([card.seq, card.head, card.title, card.status, card.intrinsic], [3, 3, 'Winter verses', 'lent', IntrinsicStatus.InProgress], 'the folded card');
|
|
23
|
+
same(events.filter(event => event.card === book.id).map(event => [event.seq, event.state]), [[1, CommitState.Committed], [2, CommitState.Committed], [3, CommitState.Committed]], 'one committed event per transition');
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
unsubscribe();
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'allocates seq against the head and refuses a stale expectSeq',
|
|
32
|
+
run: async ({ facade, store }) => {
|
|
33
|
+
const planning = facade(organization());
|
|
34
|
+
const book = await createBook(planning, (await createBranch(planning)).id);
|
|
35
|
+
await execute(planning, { card: book.id, action: TransitionAction.Update, changes: { title: 'First' }, expectSeq: 1 });
|
|
36
|
+
await rejects(planning.execute({ card: book.id, action: TransitionAction.Update, changes: { title: 'Stale' }, expectSeq: 1 }), WorkcardConflict, 'a stale expectSeq');
|
|
37
|
+
same(await store.transitions.head(book.id), 2, 'the head after two transitions');
|
|
38
|
+
same(await store.transitions.nextSeq(`conformance-${uuid()}`, null), 1, 'a card with no log allocates 1');
|
|
39
|
+
same((await planning.cards.get(book.id)).title, 'First', 'the refused write left the card alone');
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'an idempotency key answers its first receipt',
|
|
44
|
+
run: async ({ facade }) => {
|
|
45
|
+
const planning = facade(organization());
|
|
46
|
+
const book = await createBook(planning, (await createBranch(planning)).id);
|
|
47
|
+
const first = await planning.execute({ card: book.id, action: TransitionAction.Update, changes: { title: 'Kept' }, key: 'import:1' }, { wait: true });
|
|
48
|
+
const again = await planning.execute({ card: book.id, action: TransitionAction.Update, changes: { title: 'Lost' }, key: 'import:1' }, { wait: true });
|
|
49
|
+
same(again.transition.id, first.transition.id, 'the retried key answers the first transition');
|
|
50
|
+
const card = await planning.cards.get(book.id);
|
|
51
|
+
same([card.title, card.seq], ['Kept', 2], 'one write landed');
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'transit moves the intrinsic state and closedAt, and a second flow leaves the primary alone',
|
|
56
|
+
run: async ({ facade }) => {
|
|
57
|
+
const planning = facade(organization());
|
|
58
|
+
const book = await createBook(planning, (await createBranch(planning)).id);
|
|
59
|
+
await transit(planning, book.id, 'retire');
|
|
60
|
+
const retired = await planning.cards.get(book.id);
|
|
61
|
+
same([retired.status, retired.intrinsic], ['retired', IntrinsicStatus.Closed], 'retired');
|
|
62
|
+
check(typeof retired.closedAt === 'string', 'closedAt is set on entering closed');
|
|
63
|
+
await transit(planning, book.id, 'restore');
|
|
64
|
+
const restored = await planning.cards.get(book.id);
|
|
65
|
+
same([restored.status, restored.intrinsic, restored.closedAt], ['shelved', IntrinsicStatus.Planned, undefined], 'closedAt cleared on leaving closed');
|
|
66
|
+
await transit(planning, book.id, 'review', { flow: LIBRARY.review });
|
|
67
|
+
const reviewed = await planning.cards.get(book.id);
|
|
68
|
+
same([reviewed.status, reviewed.flows[LIBRARY.review], reviewed.intrinsic], ['shelved', 'reviewed', IntrinsicStatus.Planned], 'the second flow moved alone');
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'answers the query operators criteriaOf produces',
|
|
73
|
+
run: async ({ facade }) => {
|
|
74
|
+
const org = organization();
|
|
75
|
+
const planning = facade(org);
|
|
76
|
+
const east = await createBranch(planning, 'East branch');
|
|
77
|
+
const west = await createBranch(planning, 'West branch');
|
|
78
|
+
const poems = await createBook(planning, east.id, 'Winter poems', { labels: ['rare'], fields: { genre: 'poetry', signed: true } });
|
|
79
|
+
const atlas = await createBook(planning, east.id, 'River atlas', { labels: ['new'], parents: [west.id], fields: { genre: 'history' } });
|
|
80
|
+
const harbour = await createBook(planning, east.id, 'Quiet harbour', { fields: { genre: 'fiction', signed: false } });
|
|
81
|
+
await transit(planning, atlas.id, 'lend');
|
|
82
|
+
const since = (await planning.cards.get(atlas.id)).updatedAt;
|
|
83
|
+
sameSet(await ids(planning, { within: west.id }), [atlas.id], 'within');
|
|
84
|
+
sameSet(await ids(planning, { parent: east.id, flow: { id: LIBRARY.circulation, status: ['lent', 'retired'] } }), [atlas.id], 'a multi-value flow status');
|
|
85
|
+
sameSet(await ids(planning, { parent: east.id, flow: { id: LIBRARY.circulation, status: 'shelved' } }), [poems.id, harbour.id], 'one flow status');
|
|
86
|
+
sameSet(await ids(planning, { parent: east.id, fields: { genre: 'poetry' } }), [poems.id], 'a string field');
|
|
87
|
+
sameSet(await ids(planning, { parent: east.id, fields: { signed: false } }), [harbour.id], 'a boolean field');
|
|
88
|
+
sameSet(await ids(planning, { parent: east.id, labels: ['rare', 'signed'] }), [poems.id], 'labels overlap');
|
|
89
|
+
sameSet(await ids(planning, { parent: east.id, q: 'HARBOUR' }), [harbour.id], 'text search ignores case');
|
|
90
|
+
sameSet(await ids(planning, { parent: east.id, q: poems.code }), [poems.id], 'text search by code prefix');
|
|
91
|
+
sameSet(await ids(planning, { parent: east.id, q: '100%_' }), [], 'wildcards in a search are literal');
|
|
92
|
+
sameSet(await ids(planning, { parent: null, ids: [east.id, poems.id] }), [east.id], 'parent: null is a root');
|
|
93
|
+
sameSet(await ids(planning, { kind: [WorkcardKind.Project], ids: [east.id, west.id, poems.id] }), [east.id, west.id], 'kind and ids');
|
|
94
|
+
sameSet(await ids(planning, { parent: east.id, status: ['shelved'] }), [poems.id, harbour.id], 'status');
|
|
95
|
+
sameSet(await ids(planning, { parent: east.id, intrinsic: IntrinsicStatus.InProgress }), [atlas.id], 'intrinsic');
|
|
96
|
+
sameSet(await ids(planning, { parent: east.id, type: [LIBRARY.book, LIBRARY.periodical] }), [poems.id, atlas.id, harbour.id], 'type');
|
|
97
|
+
sameSet(await ids(planning, { parent: east.id, updatedSince: since }), [atlas.id], 'updatedSince');
|
|
98
|
+
same((await facade(organization()).cards.list({ labels: ['rare'] })).total, 0, 'another organization sees nothing');
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'lists specifications only when the query asks for them',
|
|
103
|
+
run: async ({ facade }) => {
|
|
104
|
+
const planning = facade(organization());
|
|
105
|
+
const branch = await createBranch(planning);
|
|
106
|
+
const book = await createBook(planning, branch.id);
|
|
107
|
+
const model = await planning.model(book);
|
|
108
|
+
const summary = (await model.write('summary', '{"lines":["a"]}', { wait: true })).card;
|
|
109
|
+
const charter = (await (await planning.model(branch)).write('charter', '# Charter', { wait: true })).card;
|
|
110
|
+
same(await ids(planning, { parent: book.id }), [], 'a card list leaves specifications out');
|
|
111
|
+
sameSet(await ids(planning, { parent: book.id, kind: WorkcardKind.Specification }), [summary.id], 'kind: specification');
|
|
112
|
+
sameSet(await ids(planning, { parent: book.id, category: 'summary' }), [summary.id], 'a category');
|
|
113
|
+
sameSet(await ids(planning, { within: branch.id }), [book.id], 'within leaves the charter out');
|
|
114
|
+
same(await planning.cards.count({ within: branch.id }), 1, 'count routes the same way');
|
|
115
|
+
sameSet(await ids(planning, { within: branch.id, kind: [WorkcardKind.Card, WorkcardKind.Specification] }), [book.id, charter.id], 'both kinds when asked');
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'pages and sorts a list, counting the whole match',
|
|
120
|
+
run: async ({ facade }) => {
|
|
121
|
+
const planning = facade(organization());
|
|
122
|
+
const branch = await createBranch(planning);
|
|
123
|
+
for (const order of [5, 3, 1, 4, 2]) {
|
|
124
|
+
await createBook(planning, branch.id, `Volume ${order}`, { order });
|
|
125
|
+
}
|
|
126
|
+
const page = await planning.cards.list({ parent: branch.id, sort: ['order'], size: 2, page: 1 });
|
|
127
|
+
same([page.total, page.page, page.size, page.items.map(card => card.order)], [5, 1, 2, [3, 4]], 'the second page');
|
|
128
|
+
const all = await planning.cards.list({ parent: branch.id, sort: [{ field: 'order', order: 'desc' }], size: 0 });
|
|
129
|
+
same(all.items.map(card => card.order), [5, 4, 3, 2, 1], 'unpaged, descending');
|
|
130
|
+
same(all.total, 5, 'the total');
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'summarizes direct children by intrinsic state',
|
|
135
|
+
run: async ({ facade }) => {
|
|
136
|
+
const planning = facade(organization());
|
|
137
|
+
const branch = await createBranch(planning);
|
|
138
|
+
const empty = await createBranch(planning, 'Empty branch');
|
|
139
|
+
const lent = await createBook(planning, branch.id, 'Lent');
|
|
140
|
+
const retired = await createBook(planning, branch.id, 'Retired');
|
|
141
|
+
await createBook(planning, branch.id, 'Shelved');
|
|
142
|
+
await transit(planning, lent.id, 'lend');
|
|
143
|
+
await transit(planning, retired.id, 'retire');
|
|
144
|
+
const annex = await createBranch(planning, 'Annex', { parent: branch.id });
|
|
145
|
+
await createBook(planning, annex.id, 'Deeper');
|
|
146
|
+
await (await planning.model(branch)).write('charter', '# Charter', { wait: true });
|
|
147
|
+
const summary = await planning.cards.summary([branch.id, empty.id]);
|
|
148
|
+
same(summary, {
|
|
149
|
+
[branch.id]: { total: 4, [IntrinsicStatus.Planned]: 2, [IntrinsicStatus.InProgress]: 1, [IntrinsicStatus.Closed]: 1 },
|
|
150
|
+
}, 'direct children only, no specifications, no key for an empty parent');
|
|
151
|
+
same((await planning.cards.summary([branch.id], { kind: WorkcardKind.Card }))[branch.id]?.total, 3, 'narrowed by kind');
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: 'answers a specification current, listed, every document and its revisions',
|
|
156
|
+
run: async ({ facade }) => {
|
|
157
|
+
const planning = facade(organization());
|
|
158
|
+
const branch = await createBranch(planning);
|
|
159
|
+
const book = await createBook(planning, branch.id);
|
|
160
|
+
const model = await planning.model(book);
|
|
161
|
+
await model.write('summary', '{"lines":["first"]}', { wait: true });
|
|
162
|
+
await (await planning.model(book.id)).write('summary', '{"lines":["second"]}', { wait: true });
|
|
163
|
+
const current = await planning.specifications.current(book.id, 'summary');
|
|
164
|
+
same([current?.revision, current?.body], [2, '{"lines":["second"]}'], 'the current document, revised in place');
|
|
165
|
+
const history = await planning.specifications.revisions(current.id);
|
|
166
|
+
same(history.map(entry => [entry.revision, entry.body]), [[2, '{"lines":["second"]}'], [1, '{"lines":["first"]}']], 'revisions newest first');
|
|
167
|
+
same((await planning.specifications.list(book.id)).items.map(spec => spec.id), [current.id], 'the list');
|
|
168
|
+
for (const title of ['First note', 'Second note']) {
|
|
169
|
+
await execute(planning, {
|
|
170
|
+
card: { kind: WorkcardKind.Specification, type: LIBRARY.page, parent: branch.id, title, category: 'notes', format: SpecificationFormat.Markdown, body: title },
|
|
171
|
+
action: TransitionAction.Create,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
same((await planning.specifications.list(branch.id, { category: 'notes' })).total, 1, 'the current one per category');
|
|
175
|
+
same((await planning.specifications.list(branch.id, { category: 'notes', all: true })).total, 2, 'every document with all');
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: 'keeps links: both ends, the single constraint, unlink and a delete dropping edges',
|
|
180
|
+
run: async ({ facade }) => {
|
|
181
|
+
const planning = facade(organization());
|
|
182
|
+
const branch = await createBranch(planning);
|
|
183
|
+
const first = await createBook(planning, branch.id, 'First');
|
|
184
|
+
const second = await createBook(planning, branch.id, 'Second');
|
|
185
|
+
const third = await createBook(planning, branch.id, 'Third');
|
|
186
|
+
await execute(planning, { card: second.id, action: TransitionAction.Link, link: { type: 'sequel-of', to: first.id } });
|
|
187
|
+
same((await planning.relationships.list({ from: second.id })).total, 1, 'from');
|
|
188
|
+
same((await planning.relationships.list({ to: first.id, type: 'sequel-of' })).items.map(link => link.from), [second.id], 'to and type');
|
|
189
|
+
await rejects(planning.execute({ card: second.id, action: TransitionAction.Link, link: { type: 'sequel-of', to: third.id } }), RelationshipRefused, 'a second single edge');
|
|
190
|
+
await execute(planning, { card: third.id, action: TransitionAction.Link, link: { type: 'shelved-near', to: first.id } });
|
|
191
|
+
await execute(planning, { card: second.id, action: TransitionAction.Link, link: { type: 'shelved-near', to: first.id } });
|
|
192
|
+
await execute(planning, { card: third.id, action: TransitionAction.Unlink, link: { type: 'shelved-near', to: first.id } });
|
|
193
|
+
sameSet((await planning.relationships.list({ to: first.id, type: 'shelved-near' })).items.map(link => link.from), [second.id], 'unlink');
|
|
194
|
+
await execute(planning, { card: first.id, action: TransitionAction.Delete });
|
|
195
|
+
same((await planning.relationships.list({ to: first.id })).total, 0, 'a delete drops the edges into the card');
|
|
196
|
+
same((await planning.relationships.list({ from: second.id })).total, 0, 'and out of the cards pointing at it');
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
name: 'isolates organizations on every read and write',
|
|
201
|
+
run: async ({ facade }) => {
|
|
202
|
+
const mine = facade(organization());
|
|
203
|
+
const theirs = facade(organization());
|
|
204
|
+
const branch = await createBranch(mine);
|
|
205
|
+
const book = await createBook(mine, branch.id);
|
|
206
|
+
const receipt = await mine.execute({ card: book.id, action: TransitionAction.Update, changes: { title: 'Mine' } }, { wait: true });
|
|
207
|
+
same(await theirs.cards.load(book.id), null, 'load');
|
|
208
|
+
await rejects(theirs.cards.get(book.id), WorkcardNotFound, 'get');
|
|
209
|
+
same((await theirs.cards.list({ within: branch.id })).total, 0, 'list');
|
|
210
|
+
same(await theirs.cards.summary([branch.id]), {}, 'summary');
|
|
211
|
+
await rejects(theirs.execute({ card: book.id, action: TransitionAction.Update, changes: { title: 'Theirs' } }), WorkcardNotFound, 'a write');
|
|
212
|
+
await rejects(theirs.transitions.get(receipt.transition.id), WorkcardNotFound, 'a transition');
|
|
213
|
+
await rejects(theirs.commits.status(receipt.transition.id), WorkcardNotFound, 'a commit');
|
|
214
|
+
same((await theirs.relationships.list({ from: book.id })).total, 0, 'links');
|
|
215
|
+
same((await mine.cards.get(book.id)).title, 'Mine', 'nothing moved');
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: 'purges everything under a deleted project, keeping at most its own delete as a tombstone',
|
|
220
|
+
run: async ({ facade }) => {
|
|
221
|
+
const planning = facade(organization());
|
|
222
|
+
const doomed = await createBranch(planning, 'Doomed branch');
|
|
223
|
+
const kept = await createBranch(planning, 'Kept branch');
|
|
224
|
+
const first = await createBook(planning, doomed.id, 'First');
|
|
225
|
+
const second = await createBook(planning, doomed.id, 'Second');
|
|
226
|
+
await execute(planning, { card: second.id, action: TransitionAction.Link, link: { type: 'sequel-of', to: first.id } });
|
|
227
|
+
const summary = (await (await planning.model(first)).write('summary', '{}', { wait: true })).card;
|
|
228
|
+
const annex = await createBranch(planning, 'Annex', { parent: doomed.id });
|
|
229
|
+
const deeper = await createBook(planning, annex.id, 'Deeper');
|
|
230
|
+
const survivor = await createBook(planning, kept.id, 'Survivor');
|
|
231
|
+
const deleted = await planning.execute({ card: doomed.id, action: TransitionAction.Delete }, { wait: true });
|
|
232
|
+
for (const id of [doomed.id, first.id, second.id, summary.id, annex.id, deeper.id]) {
|
|
233
|
+
same(await planning.cards.load(id), null, `purged ${id}`);
|
|
234
|
+
}
|
|
235
|
+
same((await planning.relationships.list({ from: second.id })).total, 0, 'links');
|
|
236
|
+
same((await planning.transitions.list({ card: first.id })).total, 0, 'a child\'s log');
|
|
237
|
+
const left = (await planning.transitions.list({ project: doomed.id, size: 0 })).items;
|
|
238
|
+
check(left.every(row => row.card === doomed.id && row.action === TransitionAction.Delete), 'only the project\'s own delete may remain');
|
|
239
|
+
same((await planning.commits.status(deleted.transition.id)).state, CommitState.Committed, 'the delete reads committed');
|
|
240
|
+
check(await planning.cards.load(survivor.id) != null, 'a sibling project survives');
|
|
241
|
+
same((await planning.cards.list({ within: kept.id })).total, 1, 'with its card');
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: 'settles a transition that cannot fold in order and folds past it',
|
|
246
|
+
run: async ({ facade, store }) => {
|
|
247
|
+
const org = organization();
|
|
248
|
+
const planning = facade(org);
|
|
249
|
+
const book = await createBook(planning, (await createBranch(planning)).id);
|
|
250
|
+
// A row two past the card with nothing between — its allocation lost long ago.
|
|
251
|
+
const rogue = await store.transitions.append({
|
|
252
|
+
entityId: org, card: book.id, kind: WorkcardKind.Card, type: LIBRARY.book, seq: 3,
|
|
253
|
+
action: TransitionAction.Update, changes: { title: 'Out of order' }, actor: {},
|
|
254
|
+
at: '2001-01-01T00:00:00.000Z', commit: { state: CommitState.Pending },
|
|
255
|
+
});
|
|
256
|
+
await store.cards.project(book.id);
|
|
257
|
+
check((await planning.commits.status(rogue.id)).state !== CommitState.Pending, 'the out-of-order row is settled, not left pending');
|
|
258
|
+
await execute(planning, { card: book.id, action: TransitionAction.Update, changes: { title: 'After' } });
|
|
259
|
+
const card = await planning.cards.get(book.id);
|
|
260
|
+
same([card.title, card.seq, card.head], ['After', 4, 4], 'the next write commits past it');
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
// ─── Data-defined types and flows ─────────────────────────────────────────────────────────────
|
|
264
|
+
{
|
|
265
|
+
name: 'defines a card type as data and admits it where the project allows data-defined types',
|
|
266
|
+
needs: ['schemas'],
|
|
267
|
+
run: async ({ facade }) => {
|
|
268
|
+
const planning = facade(organization());
|
|
269
|
+
const pamphlets = {
|
|
270
|
+
id: 'library:pamphlet-life', version: 1,
|
|
271
|
+
statuses: [{ key: 'stacked', intrinsic: IntrinsicStatus.Planned, initial: true }, { key: 'taken', intrinsic: IntrinsicStatus.Closed }],
|
|
272
|
+
transitions: [{ name: 'take', from: ['stacked'], to: 'taken', explicit: true }],
|
|
273
|
+
};
|
|
274
|
+
const pamphlet = {
|
|
275
|
+
type: 'library:pamphlet', kind: WorkcardKind.Card, version: 1, fields: { type: 'object' }, flows: [pamphlets.id], specifications: [],
|
|
276
|
+
};
|
|
277
|
+
const written = await planning.definitions.define({ flows: [pamphlets], types: [pamphlet] });
|
|
278
|
+
same(written.map(record => [record.kind, record.key, record.version]), [[PlanningSchemaKind.Flow, pamphlets.id, 1], [PlanningSchemaKind.Type, pamphlet.type, 1]], 'flows first, then types');
|
|
279
|
+
const branch = await createBranch(planning);
|
|
280
|
+
const card = await execute(planning, { card: { kind: WorkcardKind.Card, type: pamphlet.type, parent: branch.id, title: 'Opening hours' }, action: TransitionAction.Create });
|
|
281
|
+
same([card?.status, card?.intrinsic], ['stacked', IntrinsicStatus.Planned], 'the data-defined flow started it');
|
|
282
|
+
same((await planning.model(card)).available().map(rule => rule.name), ['take'], 'the model reads the layer');
|
|
283
|
+
await transit(planning, card.id, 'take');
|
|
284
|
+
const room = await execute(planning, { card: { kind: WorkcardKind.Project, type: LIBRARY.room, title: 'Reading room' }, action: TransitionAction.Create });
|
|
285
|
+
await rejects(planning.execute({ card: { kind: WorkcardKind.Card, type: pamphlet.type, parent: room.id, title: 'Refused' }, action: TransitionAction.Create }), CardTypeNotAllowed, 'a project without scopedCardTypes');
|
|
286
|
+
const bundle = await planning.definitions.bundle();
|
|
287
|
+
same([bundle.origins?.types[pamphlet.type], bundle.origins?.types[LIBRARY.book]], [SchemaOrigin.Entity, SchemaOrigin.Code], 'origins');
|
|
288
|
+
same((await facade(organization()).definitions.bundle()).types.some(type => type.type === pamphlet.type), false, 'another organization does not see it');
|
|
289
|
+
},
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
name: 'overrides an overridable code type for the organization, and a project overrides that',
|
|
293
|
+
needs: ['schemas'],
|
|
294
|
+
run: async ({ facade }) => {
|
|
295
|
+
const planning = facade(organization());
|
|
296
|
+
const branch = await createBranch(planning);
|
|
297
|
+
const other = await createBranch(planning, 'Other branch');
|
|
298
|
+
await planning.definitions.define({ types: [{ ...PERIODICAL_TYPE, label: 'Magazine' }] });
|
|
299
|
+
await planning.definitions.define({ types: [{ ...PERIODICAL_TYPE, label: 'Zine' }] }, { project: branch.id });
|
|
300
|
+
const labelOf = async (project) => (await planning.definitions.registry(project)).type(LIBRARY.periodical).label;
|
|
301
|
+
same([await labelOf(), await labelOf(branch.id), await labelOf(other.id)], ['Magazine', 'Zine', 'Magazine'], 'layered labels');
|
|
302
|
+
same((await planning.definitions.registry(branch.id)).originOf(PlanningSchemaKind.Type, LIBRARY.periodical), SchemaOrigin.Project, 'project origin');
|
|
303
|
+
const card = await execute(planning, { card: { kind: WorkcardKind.Card, type: LIBRARY.periodical, parent: branch.id, title: 'Weekly' }, action: TransitionAction.Create });
|
|
304
|
+
same((await planning.model(card)).schema().label, 'Zine', 'a card reads its own project\'s layer');
|
|
305
|
+
same((await planning.definitions.records({ project: branch.id })).map(record => record.key), [LIBRARY.periodical], 'the project layer\'s records');
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: 'refuses a sealed key, a non-card type and a lost compare-and-set',
|
|
310
|
+
needs: ['schemas'],
|
|
311
|
+
run: async ({ facade }) => {
|
|
312
|
+
const definitions = facade(organization()).definitions;
|
|
313
|
+
await rejects(definitions.putType({ ...BOOK_TYPE, label: 'Renamed' }), SchemaSealed, 'a sealed code type');
|
|
314
|
+
await rejects(definitions.define({ flows: [{ id: LIBRARY.circulation, version: 1, statuses: [{ key: 'x', intrinsic: IntrinsicStatus.Planned }], transitions: [] }] }), SchemaSealed, 'a sealed code flow');
|
|
315
|
+
await rejects(definitions.putType({ ...BOOK_TYPE, type: 'library:archive', kind: WorkcardKind.Specification }), SchemaInvalid, 'a specification type as data');
|
|
316
|
+
await rejects(definitions.putType({ ...BOOK_TYPE, type: 'library:atlas', flows: ['library:nowhere'] }), SchemaInvalid, 'a flow that does not resolve');
|
|
317
|
+
const atlas = { ...BOOK_TYPE, type: 'library:atlas', code: undefined, relationships: undefined };
|
|
318
|
+
await definitions.putType(atlas);
|
|
319
|
+
await rejects(definitions.putType(atlas), SchemaConflict, 'version 1 twice');
|
|
320
|
+
await rejects(definitions.putType({ ...atlas, version: 3 }), SchemaConflict, 'a skipped version');
|
|
321
|
+
same((await definitions.putType({ ...atlas, version: 2, label: 'Atlas' })).version, 2, 'the next version');
|
|
322
|
+
same((await definitions.seed({ types: [{ ...atlas, label: 'Seeded' }] })).length, 0, 'seed adds nothing the layer has');
|
|
323
|
+
same((await definitions.registry()).type('library:atlas').label, 'Atlas', 'seed left it alone');
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: 'retires without breaking existing cards and refuses a flow still in use',
|
|
328
|
+
needs: ['schemas'],
|
|
329
|
+
run: async ({ facade }) => {
|
|
330
|
+
const planning = facade(organization());
|
|
331
|
+
const definitions = planning.definitions;
|
|
332
|
+
const repair = {
|
|
333
|
+
id: 'library:repair', version: 1,
|
|
334
|
+
statuses: [
|
|
335
|
+
{ key: 'queued', intrinsic: IntrinsicStatus.Planned, initial: true },
|
|
336
|
+
{ key: 'mending', intrinsic: IntrinsicStatus.InProgress },
|
|
337
|
+
{ key: 'done', intrinsic: IntrinsicStatus.Closed },
|
|
338
|
+
],
|
|
339
|
+
transitions: [{ name: 'mend', from: ['queued'], to: 'mending' }, { name: 'finish', from: ['mending'], to: 'done' }],
|
|
340
|
+
};
|
|
341
|
+
const folio = {
|
|
342
|
+
type: 'library:folio', kind: WorkcardKind.Card, version: 1, fields: { type: 'object' }, flows: [repair.id], specifications: [],
|
|
343
|
+
};
|
|
344
|
+
await definitions.define({ flows: [repair], types: [folio] });
|
|
345
|
+
const branch = await createBranch(planning);
|
|
346
|
+
const card = await execute(planning, { card: { kind: WorkcardKind.Card, type: folio.type, parent: branch.id, title: 'Old map' }, action: TransitionAction.Create });
|
|
347
|
+
await transit(planning, card.id, 'mend');
|
|
348
|
+
await rejects(definitions.retire(PlanningSchemaKind.Flow, repair.id), SchemaInUse, 'a flow a live type runs');
|
|
349
|
+
// The flow changes under the card: `mending` is no longer declared, and the card still moves.
|
|
350
|
+
await definitions.define({ flows: [{ ...repair, statuses: [repair.statuses[0], repair.statuses[2]], transitions: [{ name: 'finish', from: ['queued'], to: 'done' }] }] });
|
|
351
|
+
await transit(planning, card.id, 'finish');
|
|
352
|
+
same((await planning.cards.get(card.id)).status, 'done', 'an undeclared status follows the rule of the name');
|
|
353
|
+
await definitions.retire(PlanningSchemaKind.Type, folio.type);
|
|
354
|
+
await rejects(planning.execute({ card: { kind: WorkcardKind.Card, type: folio.type, parent: branch.id, title: 'New map' }, action: TransitionAction.Create }), UnknownWorkcardType, 'nothing new of a retired type');
|
|
355
|
+
await execute(planning, { card: card.id, action: TransitionAction.Update, changes: { title: 'Old map, mended' } });
|
|
356
|
+
same((await planning.cards.get(card.id)).title, 'Old map, mended', 'an existing card still writes');
|
|
357
|
+
same((await definitions.retire(PlanningSchemaKind.Flow, repair.id)).retired, true, 'the flow retires once no live type runs it');
|
|
358
|
+
same((await definitions.bundle()).retired, { types: [folio.type], flows: [repair.id] }, 'both listed retired');
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
name: 'moves the revision on every write and resolves the next read from it',
|
|
363
|
+
needs: ['schemas'],
|
|
364
|
+
run: async ({ facade, store }) => {
|
|
365
|
+
const org = organization();
|
|
366
|
+
const definitions = facade(org).definitions;
|
|
367
|
+
const heard = [];
|
|
368
|
+
const unwatch = store.schemas.watch?.(entityId => { heard.push(entityId); });
|
|
369
|
+
try {
|
|
370
|
+
const before = await store.schemas.revision(org);
|
|
371
|
+
await definitions.define({ types: [{ ...PERIODICAL_TYPE, label: 'Journal' }] });
|
|
372
|
+
const after = await store.schemas.revision(org);
|
|
373
|
+
check(after > before, 'a write moves the revision');
|
|
374
|
+
same((await definitions.bundle()).revision, after, 'the bundle names its revision');
|
|
375
|
+
same((await definitions.registry()).type(LIBRARY.periodical).label, 'Journal', 'the first read');
|
|
376
|
+
await definitions.define({ types: [{ ...PERIODICAL_TYPE, label: 'Gazette' }] });
|
|
377
|
+
same((await definitions.registry()).type(LIBRARY.periodical).label, 'Gazette', 'a cached layer is never served stale');
|
|
378
|
+
if (unwatch != null) {
|
|
379
|
+
check(heard.includes(org), 'a watcher hears the write');
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
finally {
|
|
383
|
+
unwatch?.();
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
},
|
|
387
|
+
];
|
|
388
|
+
/** Every conformance case, in order. */
|
|
389
|
+
export const planningConformance = Object.freeze(cases);
|
|
390
|
+
/** The cases a store qualifies for — a case needing `schemas` only where the store holds them. */
|
|
391
|
+
export const conformanceCasesFor = (store) => planningConformance.filter(entry => (entry.needs ?? []).every(need => need !== 'schemas' || store.schemas != null));
|
|
392
|
+
//# sourceMappingURL=cases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cases.js","sourceRoot":"","sources":["../../src/conformance/cases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PlanningFacade, PlanningPlugin, TransitionReceipt, Workcard, WorkcardTypeSchema } from '@owlmeans/planning';
|
|
2
|
+
/**
|
|
3
|
+
* The conformance vocabulary: a lending library. Branches (projects) hold books and periodicals
|
|
4
|
+
* (cards); a book runs a circulation flow and a review flow; documents are pages.
|
|
5
|
+
*/
|
|
6
|
+
export declare const LIBRARY: Readonly<{
|
|
7
|
+
branch: "library:branch";
|
|
8
|
+
room: "library:reading-room";
|
|
9
|
+
book: "library:book";
|
|
10
|
+
periodical: "library:periodical";
|
|
11
|
+
page: "library:page";
|
|
12
|
+
circulation: "library:circulation";
|
|
13
|
+
review: "library:review";
|
|
14
|
+
branchLife: "library:branch-life";
|
|
15
|
+
pageLife: "library:page-life";
|
|
16
|
+
}>;
|
|
17
|
+
export declare const BOOK_TYPE: WorkcardTypeSchema;
|
|
18
|
+
export declare const PERIODICAL_TYPE: WorkcardTypeSchema;
|
|
19
|
+
/** The types and flows every conformance case runs against — register it on the service under test. */
|
|
20
|
+
export declare const planningConformancePlugin: PlanningPlugin;
|
|
21
|
+
/**
|
|
22
|
+
* A clock that never repeats an instant — what a conformance service is booted with, so an
|
|
23
|
+
* `updatedSince` or an ordering by `at` is deterministic on a fast store.
|
|
24
|
+
*/
|
|
25
|
+
export declare const conformanceClock: () => (() => string);
|
|
26
|
+
export declare const createBranch: (planning: PlanningFacade, title?: string, extra?: Record<string, unknown>) => Promise<Workcard>;
|
|
27
|
+
export declare const createBook: (planning: PlanningFacade, branch: string, title?: string, extra?: Record<string, unknown>) => Promise<Workcard>;
|
|
28
|
+
export declare const transit: (planning: PlanningFacade, card: string, transition: string, extra?: {
|
|
29
|
+
flow?: string;
|
|
30
|
+
}) => Promise<TransitionReceipt>;
|
|
31
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/conformance/fixtures.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACK,cAAc,EAAE,cAAc,EAAoB,iBAAiB,EAAE,QAAQ,EAC5F,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAE3B;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;EAUlB,CAAA;AA4CF,eAAO,MAAM,SAAS,EAAE,kBAcvB,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,kBAS7B,CAAA;AAuCD,uGAAuG;AACvG,eAAO,MAAM,yBAAyB,EAAE,cAItC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAO,CAAC,MAAM,MAAM,CAMhD,CAAA;AAED,eAAO,MAAM,YAAY,aACb,cAAc,UAAS,MAAM,UAA8B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3F,OAAO,CAAC,QAAQ,CAGM,CAAA;AAEzB,eAAO,MAAM,UAAU,aACX,cAAc,UAAU,MAAM,UAAS,MAAM,UAAoB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACjG,OAAO,CAAC,QAAQ,CAGM,CAAA;AAEzB,eAAO,MAAM,OAAO,aACR,cAAc,QAAQ,MAAM,cAAc,MAAM,UAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KACnF,OAAO,CAAC,iBAAiB,CAEV,CAAA"}
|