@auto-engineer/narrative 0.12.1 → 0.13.1
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +24 -0
- package/dist/src/commands/export-schema-runner.js +1 -1
- package/dist/src/commands/export-schema-runner.js.map +1 -1
- package/dist/src/fluent-builder.js +3 -3
- package/dist/src/fluent-builder.js.map +1 -1
- package/dist/src/getNarratives.specs.js +157 -161
- package/dist/src/getNarratives.specs.js.map +1 -1
- package/dist/src/id/addAutoIds.d.ts.map +1 -1
- package/dist/src/id/addAutoIds.js +23 -10
- package/dist/src/id/addAutoIds.js.map +1 -1
- package/dist/src/id/addAutoIds.specs.js +55 -46
- package/dist/src/id/addAutoIds.specs.js.map +1 -1
- package/dist/src/id/generators.js +1 -1
- package/dist/src/id/generators.js.map +1 -1
- package/dist/src/id/hasAllIds.d.ts.map +1 -1
- package/dist/src/id/hasAllIds.js +8 -3
- package/dist/src/id/hasAllIds.js.map +1 -1
- package/dist/src/id/hasAllIds.specs.js +142 -215
- package/dist/src/id/hasAllIds.specs.js.map +1 -1
- package/dist/src/index.d.ts +7 -8
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/loader/graph.d.ts.map +1 -1
- package/dist/src/loader/graph.js +13 -6
- package/dist/src/loader/graph.js.map +1 -1
- package/dist/src/loader/ts-utils.d.ts +1 -0
- package/dist/src/loader/ts-utils.d.ts.map +1 -1
- package/dist/src/loader/ts-utils.js +95 -16
- package/dist/src/loader/ts-utils.js.map +1 -1
- package/dist/src/model-to-narrative.specs.js +548 -466
- package/dist/src/model-to-narrative.specs.js.map +1 -1
- package/dist/src/narrative-context.d.ts +8 -8
- package/dist/src/narrative-context.d.ts.map +1 -1
- package/dist/src/narrative-context.js +111 -301
- package/dist/src/narrative-context.js.map +1 -1
- package/dist/src/narrative-context.specs.js +15 -55
- package/dist/src/narrative-context.specs.js.map +1 -1
- package/dist/src/narrative.d.ts +19 -22
- package/dist/src/narrative.d.ts.map +1 -1
- package/dist/src/narrative.js +42 -71
- package/dist/src/narrative.js.map +1 -1
- package/dist/src/samples/questionnaires.narrative.js +10 -10
- package/dist/src/samples/questionnaires.narrative.js.map +1 -1
- package/dist/src/samples/test-with-ids.narrative.js +13 -29
- package/dist/src/samples/test-with-ids.narrative.js.map +1 -1
- package/dist/src/schema.d.ts +2704 -8293
- package/dist/src/schema.d.ts.map +1 -1
- package/dist/src/schema.js +26 -47
- package/dist/src/schema.js.map +1 -1
- package/dist/src/slice-builder.js +3 -3
- package/dist/src/slice-builder.js.map +1 -1
- package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -1
- package/dist/src/transformers/model-to-narrative/generators/flow.js +118 -74
- package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -1
- package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts +9 -1
- package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts.map +1 -1
- package/dist/src/transformers/model-to-narrative/generators/gwt.js +112 -112
- package/dist/src/transformers/model-to-narrative/generators/gwt.js.map +1 -1
- package/dist/src/transformers/model-to-narrative/generators/imports.d.ts +1 -1
- package/dist/src/transformers/model-to-narrative/generators/imports.d.ts.map +1 -1
- package/dist/src/transformers/model-to-narrative/generators/imports.js +13 -9
- package/dist/src/transformers/model-to-narrative/generators/imports.js.map +1 -1
- package/dist/src/transformers/narrative-to-model/index.d.ts.map +1 -1
- package/dist/src/transformers/narrative-to-model/index.js +50 -23
- package/dist/src/transformers/narrative-to-model/index.js.map +1 -1
- package/dist/src/transformers/narrative-to-model/type-inference.specs.js +100 -90
- package/dist/src/transformers/narrative-to-model/type-inference.specs.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/commands/export-schema-runner.ts +3 -1
- package/src/fluent-builder.ts +3 -3
- package/src/getNarratives.specs.ts +176 -184
- package/src/id/addAutoIds.specs.ts +55 -48
- package/src/id/addAutoIds.ts +28 -11
- package/src/id/generators.ts +1 -1
- package/src/id/hasAllIds.specs.ts +147 -245
- package/src/id/hasAllIds.ts +11 -4
- package/src/index.ts +11 -12
- package/src/loader/graph.ts +23 -6
- package/src/loader/ts-utils.ts +169 -26
- package/src/model-to-narrative.specs.ts +548 -466
- package/src/narrative-context.specs.ts +73 -116
- package/src/narrative-context.ts +127 -374
- package/src/narrative.ts +70 -120
- package/src/samples/questionnaires.narrative.ts +10 -10
- package/src/samples/test-with-ids.narrative.ts +23 -31
- package/src/schema.ts +33 -52
- package/src/slice-builder.ts +3 -3
- package/src/transformers/model-to-narrative/generators/flow.ts +191 -85
- package/src/transformers/model-to-narrative/generators/gwt.ts +195 -178
- package/src/transformers/model-to-narrative/generators/imports.ts +13 -9
- package/src/transformers/narrative-to-model/index.ts +87 -26
- package/src/transformers/narrative-to-model/type-inference.specs.ts +100 -90
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
2
|
import { flow, example, rule, specs } from './narrative.js';
|
|
3
3
|
import { command } from './fluent-builder.js';
|
|
4
|
-
describe('
|
|
4
|
+
describe('Narrative DSL', () => {
|
|
5
5
|
beforeEach(async () => {
|
|
6
6
|
// Clean test state before each test
|
|
7
7
|
});
|
|
8
|
-
it('should support
|
|
8
|
+
it('should support given() method in builder', () => {
|
|
9
9
|
expect(() => {
|
|
10
|
-
flow('test flow with
|
|
10
|
+
flow('test flow with given', () => {
|
|
11
11
|
command('test command').server(() => {
|
|
12
12
|
specs(() => {
|
|
13
|
-
rule('test rule with
|
|
14
|
-
example('given
|
|
13
|
+
rule('test rule with given', () => {
|
|
14
|
+
example('given test')
|
|
15
15
|
.given({
|
|
16
16
|
questionnaireId: 'q-001',
|
|
17
17
|
participantId: 'participant-abc',
|
|
18
18
|
link: 'https://app.example.com/q/q-001?participant=participant-abc',
|
|
19
19
|
sentAt: new Date('2030-01-01T09:00:00Z'),
|
|
20
|
-
}, {
|
|
21
|
-
sentAt: 'comes from the system clock',
|
|
22
|
-
questionnaireId: 'must be a valid questionnaire ID',
|
|
23
|
-
link: 'generated based on questionnaire and participant',
|
|
24
20
|
})
|
|
25
21
|
.when({
|
|
26
22
|
questionnaireId: 'q-001',
|
|
@@ -43,13 +39,13 @@ describe('Context Parameter Support', () => {
|
|
|
43
39
|
});
|
|
44
40
|
}).not.toThrow();
|
|
45
41
|
});
|
|
46
|
-
it('should support
|
|
42
|
+
it('should support when() method in builder', () => {
|
|
47
43
|
expect(() => {
|
|
48
|
-
flow('test flow with when
|
|
44
|
+
flow('test flow with when', () => {
|
|
49
45
|
command('test command').server(() => {
|
|
50
46
|
specs(() => {
|
|
51
47
|
rule('test rule', () => {
|
|
52
|
-
example('when
|
|
48
|
+
example('when test')
|
|
53
49
|
.given({
|
|
54
50
|
questionnaireId: 'q-001',
|
|
55
51
|
participantId: 'participant-abc',
|
|
@@ -62,9 +58,6 @@ describe('Context Parameter Support', () => {
|
|
|
62
58
|
questionId: 'q1',
|
|
63
59
|
answer: 'Yes',
|
|
64
60
|
savedAt: new Date('2030-01-01T09:05:00Z'),
|
|
65
|
-
}, {
|
|
66
|
-
answer: 'must be validated according to the question type',
|
|
67
|
-
savedAt: 'timestamp when the answer was saved',
|
|
68
61
|
})
|
|
69
62
|
.then({
|
|
70
63
|
questionnaireId: 'q-001',
|
|
@@ -80,13 +73,13 @@ describe('Context Parameter Support', () => {
|
|
|
80
73
|
});
|
|
81
74
|
}).not.toThrow();
|
|
82
75
|
});
|
|
83
|
-
it('should support
|
|
76
|
+
it('should support then() method in builder', () => {
|
|
84
77
|
expect(() => {
|
|
85
|
-
flow('test flow with then
|
|
78
|
+
flow('test flow with then', () => {
|
|
86
79
|
command('test command').server(() => {
|
|
87
80
|
specs(() => {
|
|
88
81
|
rule('test rule', () => {
|
|
89
|
-
example('then
|
|
82
|
+
example('then test')
|
|
90
83
|
.given({
|
|
91
84
|
questionnaireId: 'q-001',
|
|
92
85
|
participantId: 'participant-abc',
|
|
@@ -107,10 +100,6 @@ describe('Context Parameter Support', () => {
|
|
|
107
100
|
currentQuestionId: 'q2',
|
|
108
101
|
remainingQuestions: ['q2'],
|
|
109
102
|
answers: [{ questionId: 'q1', value: 'Yes' }],
|
|
110
|
-
}, {
|
|
111
|
-
answers: 'computed from the answered questions',
|
|
112
|
-
status: 'calculated based on completed questions',
|
|
113
|
-
currentQuestionId: 'next question to be answered',
|
|
114
103
|
});
|
|
115
104
|
});
|
|
116
105
|
});
|
|
@@ -118,23 +107,18 @@ describe('Context Parameter Support', () => {
|
|
|
118
107
|
});
|
|
119
108
|
}).not.toThrow();
|
|
120
109
|
});
|
|
121
|
-
it('should
|
|
122
|
-
// This test would require a proper file system setup to work with getNarratives
|
|
123
|
-
// For now, we'll just test that the methods accept context parameters
|
|
110
|
+
it('should support full narrative DSL flow', () => {
|
|
124
111
|
expect(() => {
|
|
125
|
-
flow('test
|
|
112
|
+
flow('test full DSL flow', () => {
|
|
126
113
|
command('test preservation').server(() => {
|
|
127
114
|
specs(() => {
|
|
128
|
-
rule('
|
|
129
|
-
example('
|
|
115
|
+
rule('full flow rule', () => {
|
|
116
|
+
example('full flow test')
|
|
130
117
|
.given({
|
|
131
118
|
questionnaireId: 'q-001',
|
|
132
119
|
participantId: 'participant-abc',
|
|
133
120
|
link: 'https://app.example.com/q/q-001?participant=participant-abc',
|
|
134
121
|
sentAt: new Date('2030-01-01T09:00:00Z'),
|
|
135
|
-
}, {
|
|
136
|
-
sentAt: 'comes from the system clock',
|
|
137
|
-
questionnaireId: 'validated questionnaire identifier',
|
|
138
122
|
})
|
|
139
123
|
.when({
|
|
140
124
|
questionnaireId: 'q-001',
|
|
@@ -157,29 +141,5 @@ describe('Context Parameter Support', () => {
|
|
|
157
141
|
});
|
|
158
142
|
}).not.toThrow();
|
|
159
143
|
});
|
|
160
|
-
// These tests should fail with TypeScript compilation errors
|
|
161
|
-
// Commenting out for now - they will be used to verify strict typing works
|
|
162
|
-
/*
|
|
163
|
-
it('should reject invalid context fields (compilation test)', () => {
|
|
164
|
-
// This should cause a TypeScript error - invalidField is not in QuestionnaireLinkSent
|
|
165
|
-
flow('invalid context test', () => {
|
|
166
|
-
command('test').server(() => {
|
|
167
|
-
specs(() => {
|
|
168
|
-
rule('test rule', () => {
|
|
169
|
-
example('invalid context')
|
|
170
|
-
.given<QuestionnaireLinkSent>({
|
|
171
|
-
questionnaireId: 'q-001',
|
|
172
|
-
participantId: 'participant-abc',
|
|
173
|
-
link: 'https://app.example.com',
|
|
174
|
-
sentAt: new Date(),
|
|
175
|
-
}, {
|
|
176
|
-
invalidField: 'this should cause a type error' // TypeScript error expected
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
*/
|
|
184
144
|
});
|
|
185
145
|
//# sourceMappingURL=narrative-context.specs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"narrative-context.specs.js","sourceRoot":"","sources":["../../src/narrative-context.specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"narrative-context.specs.js","sourceRoot":"","sources":["../../src/narrative-context.specs.ts"],"names":[],"mappings":"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"}
|
package/dist/src/narrative.d.ts
CHANGED
|
@@ -13,36 +13,33 @@ export declare function it(title: string): void;
|
|
|
13
13
|
export declare function it(id: string, title: string): void;
|
|
14
14
|
export declare function should(title: string): void;
|
|
15
15
|
export declare function should(id: string, title: string): void;
|
|
16
|
-
export declare function specs(
|
|
16
|
+
export declare function specs(feature: string, fn: () => void): void;
|
|
17
17
|
export declare function specs(fn: () => void): void;
|
|
18
|
-
export declare function rule(
|
|
19
|
-
export declare function rule(
|
|
20
|
-
export declare const example: (description: string) => TypedExampleBuilder;
|
|
18
|
+
export declare function rule(name: string, fn: () => void): void;
|
|
19
|
+
export declare function rule(name: string, id: string, fn: () => void): void;
|
|
21
20
|
type ExtractData<T> = T extends {
|
|
22
21
|
data: infer D;
|
|
23
22
|
} ? D : T;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
given<T>(data: ExtractData<T> | ExtractData<T>[], context?: ContextFor<T>): TypedGivenBuilder<T>;
|
|
27
|
-
when<W>(data: ExtractData<W> | ExtractData<W>[], context?: ContextFor<W>): TypedWhenBuilder<W>;
|
|
23
|
+
export interface ThenBuilder {
|
|
24
|
+
and<T>(data: ExtractData<T>): ThenBuilder;
|
|
28
25
|
}
|
|
29
|
-
interface
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
then<T>(data: ExtractData<T> | ExtractData<T>[], context?: ContextFor<T>): TypedGivenThenBuilder<G, never, T>;
|
|
26
|
+
export interface WhenBuilder {
|
|
27
|
+
then<T>(data: ExtractData<T>): ThenBuilder;
|
|
28
|
+
and<T>(data: ExtractData<T>): WhenBuilder;
|
|
33
29
|
}
|
|
34
|
-
interface
|
|
35
|
-
|
|
30
|
+
export interface GivenBuilder {
|
|
31
|
+
and<T>(data: ExtractData<T>): GivenBuilder;
|
|
32
|
+
when<W>(data: ExtractData<W>): WhenBuilder;
|
|
33
|
+
then<T>(data: ExtractData<T>): ThenBuilder;
|
|
36
34
|
}
|
|
37
|
-
interface
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
interface TypedThenBuilder<W, T> {
|
|
41
|
-
and<A>(data: ExtractData<A> | ExtractData<A>[], context?: ContextFor<A>): TypedThenBuilder<W, T | A>;
|
|
42
|
-
}
|
|
43
|
-
interface TypedGivenThenBuilder<G, W, T> {
|
|
44
|
-
and<A>(data: ExtractData<A> | ExtractData<A>[], context?: ContextFor<A>): TypedGivenThenBuilder<G, W, T | A>;
|
|
35
|
+
export interface ExampleBuilder {
|
|
36
|
+
given<T>(data: ExtractData<T>): GivenBuilder;
|
|
37
|
+
when<W>(data: ExtractData<W>): WhenBuilder;
|
|
45
38
|
}
|
|
39
|
+
export declare function example(name: string): ExampleBuilder;
|
|
40
|
+
export declare function example(name: string, id: string): ExampleBuilder;
|
|
41
|
+
type ErrorType = 'IllegalStateError' | 'ValidationError' | 'NotFoundError';
|
|
42
|
+
export declare function thenError(errorType: ErrorType, message?: string): void;
|
|
46
43
|
export declare const SliceType: {
|
|
47
44
|
readonly COMMAND: "command";
|
|
48
45
|
readonly QUERY: "query";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"narrative.d.ts","sourceRoot":"","sources":["../../src/narrative.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"narrative.d.ts","sourceRoot":"","sources":["../../src/narrative.ts"],"names":[],"mappings":"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"}
|
package/dist/src/narrative.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { registry } from './narrative-registry.js';
|
|
2
|
-
import { startNarrative, clearCurrentNarrative, getCurrentSlice, startClientBlock, endClientBlock, startServerBlock, endServerBlock, pushSpec, pushDescribe, popDescribe, recordIt, setSliceData, recordRule, recordExample,
|
|
2
|
+
import { startNarrative, clearCurrentNarrative, getCurrentSlice, startClientBlock, endClientBlock, startServerBlock, endServerBlock, pushSpec, pushDescribe, popDescribe, recordIt, setSliceData, recordRule, recordExample, recordStep, recordErrorStep, } from './narrative-context.js';
|
|
3
3
|
import createDebug from 'debug';
|
|
4
4
|
const debug = createDebug('auto:narrative:narrative');
|
|
5
5
|
if ('color' in debug && typeof debug === 'object') {
|
|
6
6
|
debug.color = '6';
|
|
7
|
-
}
|
|
7
|
+
}
|
|
8
8
|
export function narrative(name, idOrFn, fn) {
|
|
9
9
|
const id = typeof idOrFn === 'string' ? idOrFn : undefined;
|
|
10
10
|
const callback = typeof idOrFn === 'function' ? idOrFn : fn;
|
|
@@ -61,102 +61,73 @@ export function should(idOrTitle, title) {
|
|
|
61
61
|
const hasId = title !== undefined;
|
|
62
62
|
recordIt(hasId ? idOrTitle : undefined, hasId ? title : idOrTitle);
|
|
63
63
|
}
|
|
64
|
-
export function specs(
|
|
65
|
-
const
|
|
66
|
-
const callback = typeof
|
|
67
|
-
pushSpec(
|
|
64
|
+
export function specs(featureOrFn, fn) {
|
|
65
|
+
const feature = typeof featureOrFn === 'string' ? featureOrFn : '';
|
|
66
|
+
const callback = typeof featureOrFn === 'function' ? featureOrFn : fn;
|
|
67
|
+
pushSpec(feature);
|
|
68
68
|
callback();
|
|
69
69
|
}
|
|
70
|
-
export function rule(
|
|
70
|
+
export function rule(name, idOrFn, fn) {
|
|
71
71
|
const id = typeof idOrFn === 'string' ? idOrFn : undefined;
|
|
72
72
|
const callback = typeof idOrFn === 'function' ? idOrFn : fn;
|
|
73
|
-
|
|
74
|
-
throw new Error(`rule() requires a callback function. Got: ${typeof idOrFn}, ${typeof fn}`);
|
|
75
|
-
}
|
|
76
|
-
recordRule(description, id);
|
|
73
|
+
recordRule(name, id);
|
|
77
74
|
callback();
|
|
78
75
|
}
|
|
79
|
-
export const example = (description) => {
|
|
80
|
-
recordExample(description);
|
|
81
|
-
return createExampleBuilder();
|
|
82
|
-
};
|
|
83
|
-
function normalizeContext(context) {
|
|
84
|
-
if (!context)
|
|
85
|
-
return undefined;
|
|
86
|
-
const filtered = {};
|
|
87
|
-
for (const [key, value] of Object.entries(context)) {
|
|
88
|
-
if (value !== undefined) {
|
|
89
|
-
filtered[key] = value;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return Object.keys(filtered).length > 0 ? filtered : undefined;
|
|
93
|
-
}
|
|
94
76
|
function createThenBuilder() {
|
|
95
77
|
return {
|
|
96
|
-
and(data
|
|
97
|
-
|
|
98
|
-
recordAndThenData(andItems, normalizeContext(context));
|
|
78
|
+
and(data) {
|
|
79
|
+
recordStep('And', 'InferredType', data);
|
|
99
80
|
return createThenBuilder();
|
|
100
81
|
},
|
|
101
82
|
};
|
|
102
83
|
}
|
|
84
|
+
function createWhenBuilder() {
|
|
85
|
+
return {
|
|
86
|
+
then(data) {
|
|
87
|
+
recordStep('Then', 'InferredType', data);
|
|
88
|
+
return createThenBuilder();
|
|
89
|
+
},
|
|
90
|
+
and(data) {
|
|
91
|
+
recordStep('And', 'InferredType', data);
|
|
92
|
+
return createWhenBuilder();
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
103
96
|
function createGivenBuilder() {
|
|
104
97
|
return {
|
|
105
|
-
and(data
|
|
106
|
-
|
|
107
|
-
recordAndGivenData(andItems, normalizeContext(context));
|
|
98
|
+
and(data) {
|
|
99
|
+
recordStep('And', 'InferredType', data);
|
|
108
100
|
return createGivenBuilder();
|
|
109
101
|
},
|
|
110
|
-
when(data
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return {
|
|
114
|
-
then(data, context) {
|
|
115
|
-
const thenItems = Array.isArray(data) ? data : [data];
|
|
116
|
-
recordThenData(thenItems, normalizeContext(context));
|
|
117
|
-
return {
|
|
118
|
-
and(data, context) {
|
|
119
|
-
const andItems = Array.isArray(data) ? data : [data];
|
|
120
|
-
recordAndThenData(andItems, normalizeContext(context));
|
|
121
|
-
return createThenBuilder();
|
|
122
|
-
},
|
|
123
|
-
};
|
|
124
|
-
},
|
|
125
|
-
};
|
|
102
|
+
when(data) {
|
|
103
|
+
recordStep('When', 'InferredType', data);
|
|
104
|
+
return createWhenBuilder();
|
|
126
105
|
},
|
|
127
|
-
then(data
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return {
|
|
131
|
-
and(data, context) {
|
|
132
|
-
const andItems = Array.isArray(data) ? data : [data];
|
|
133
|
-
recordAndThenData(andItems, normalizeContext(context));
|
|
134
|
-
return createThenBuilder();
|
|
135
|
-
},
|
|
136
|
-
};
|
|
106
|
+
then(data) {
|
|
107
|
+
recordStep('Then', 'InferredType', data);
|
|
108
|
+
return createThenBuilder();
|
|
137
109
|
},
|
|
138
110
|
};
|
|
139
111
|
}
|
|
140
112
|
function createExampleBuilder() {
|
|
141
113
|
return {
|
|
142
|
-
given(data
|
|
143
|
-
|
|
144
|
-
recordGivenData(items, normalizeContext(context));
|
|
114
|
+
given(data) {
|
|
115
|
+
recordStep('Given', 'InferredType', data);
|
|
145
116
|
return createGivenBuilder();
|
|
146
117
|
},
|
|
147
|
-
when(data
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return {
|
|
151
|
-
then(data, context) {
|
|
152
|
-
const thenItems = Array.isArray(data) ? data : [data];
|
|
153
|
-
recordThenData(thenItems, normalizeContext(context));
|
|
154
|
-
return createThenBuilder();
|
|
155
|
-
},
|
|
156
|
-
};
|
|
118
|
+
when(data) {
|
|
119
|
+
recordStep('When', 'InferredType', data);
|
|
120
|
+
return createWhenBuilder();
|
|
157
121
|
},
|
|
158
122
|
};
|
|
159
123
|
}
|
|
124
|
+
export function example(name, id) {
|
|
125
|
+
recordExample(name, id);
|
|
126
|
+
return createExampleBuilder();
|
|
127
|
+
}
|
|
128
|
+
export function thenError(errorType, message) {
|
|
129
|
+
recordErrorStep(errorType, message);
|
|
130
|
+
}
|
|
160
131
|
export const SliceType = {
|
|
161
132
|
COMMAND: 'command',
|
|
162
133
|
QUERY: 'query',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"narrative.js","sourceRoot":"","sources":["../../src/narrative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"narrative.js","sourceRoot":"","sources":["../../src/narrative.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { command, query, experience, flow, it, describe, specs, rule, example, gql, source, data, sink, } from '@auto-engineer/narrative';
|
|
2
|
-
flow('Questionnaires', '
|
|
3
|
-
experience('Homepage', '
|
|
2
|
+
flow('Questionnaires', 'Q9m2Kp4Lx', () => {
|
|
3
|
+
experience('Homepage', 'H1a4Bn6Cy').client(() => {
|
|
4
4
|
it('show a hero section with a welcome message');
|
|
5
5
|
it('allow user to start the questionnaire');
|
|
6
6
|
});
|
|
7
|
-
query('views the questionnaire', '
|
|
7
|
+
query('views the questionnaire', 'V7n8Rq5M')
|
|
8
8
|
.server(() => {
|
|
9
9
|
specs(() => {
|
|
10
|
-
rule('questionnaires show current progress', '
|
|
10
|
+
rule('questionnaires show current progress', 'r1A3Bp9W', () => {
|
|
11
11
|
example('a question has already been answered')
|
|
12
12
|
.given({
|
|
13
13
|
questionnaireId: 'q-001',
|
|
@@ -72,10 +72,10 @@ flow('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
72
72
|
it('show a progress indicator that is always visible as the user scrolls');
|
|
73
73
|
});
|
|
74
74
|
});
|
|
75
|
-
command('submits a questionnaire answer', '
|
|
75
|
+
command('submits a questionnaire answer', 'S4j6Nt8Z')
|
|
76
76
|
.server(() => {
|
|
77
77
|
specs(() => {
|
|
78
|
-
rule('answers are allowed while the questionnaire has not been submitted', '
|
|
78
|
+
rule('answers are allowed while the questionnaire has not been submitted', 'r2D5Eq0Y', () => {
|
|
79
79
|
example('no questions have been answered yet')
|
|
80
80
|
.when({
|
|
81
81
|
questionnaireId: 'q-001',
|
|
@@ -128,10 +128,10 @@ flow('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
128
128
|
it('display an error message when the answer submission is rejected');
|
|
129
129
|
});
|
|
130
130
|
});
|
|
131
|
-
query('questionnaire ready for submission', '
|
|
131
|
+
query('questionnaire ready for submission', 'R3f7Hu1X')
|
|
132
132
|
.server(() => {
|
|
133
133
|
specs(() => {
|
|
134
|
-
rule('questionnaire is ready for submission when all questions are answered', '
|
|
134
|
+
rule('questionnaire is ready for submission when all questions are answered', 'r3G8Iv2W', () => {
|
|
135
135
|
example('all questions have been answered')
|
|
136
136
|
.given({
|
|
137
137
|
questionnaireId: 'q-001',
|
|
@@ -218,10 +218,10 @@ flow('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
218
218
|
it('disable the submit button when all questions have not been answered');
|
|
219
219
|
});
|
|
220
220
|
});
|
|
221
|
-
command('submits the questionnaire', '
|
|
221
|
+
command('submits the questionnaire', 'T5k9Jw3V')
|
|
222
222
|
.server(() => {
|
|
223
223
|
specs(() => {
|
|
224
|
-
rule('questionnaire allowed to be submitted when all questions are answered', '
|
|
224
|
+
rule('questionnaire allowed to be submitted when all questions are answered', 'r4H0Lx4U', () => {
|
|
225
225
|
example('submits the questionnaire successfully')
|
|
226
226
|
.when({
|
|
227
227
|
questionnaireId: 'q-001',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questionnaires.narrative.js","sourceRoot":"","sources":["../../../src/samples/questionnaires.narrative.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EACL,UAAU,EACV,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,OAAO,EACP,GAAG,EACH,MAAM,EACN,IAAI,EACJ,IAAI,GAIL,MAAM,0BAA0B,CAAC;AAgFlC,IAAI,CAAC,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"questionnaires.narrative.js","sourceRoot":"","sources":["../../../src/samples/questionnaires.narrative.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { flow, specs, rule, example } from '../narrative.js';
|
|
1
|
+
import { flow, specs, rule, example, thenError } from '../narrative.js';
|
|
2
2
|
import { command, query, react } from '../fluent-builder.js';
|
|
3
3
|
flow('Test Flow with IDs', 'FLOW-001', () => {
|
|
4
4
|
command('Create test item', 'SLICE-001')
|
|
@@ -18,17 +18,11 @@ flow('Test Flow with IDs', 'FLOW-001', () => {
|
|
|
18
18
|
});
|
|
19
19
|
});
|
|
20
20
|
rule('Invalid test items should be rejected', 'RULE-002', () => {
|
|
21
|
-
example('User tries to create item with empty name')
|
|
22
|
-
.when({
|
|
21
|
+
example('User tries to create item with empty name').when({
|
|
23
22
|
itemId: 'test_456',
|
|
24
23
|
name: '',
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
errorType: 'ValidationError',
|
|
29
|
-
message: 'Item name cannot be empty',
|
|
30
|
-
},
|
|
31
|
-
]);
|
|
24
|
+
});
|
|
25
|
+
thenError('ValidationError', 'Item name cannot be empty');
|
|
32
26
|
});
|
|
33
27
|
});
|
|
34
28
|
});
|
|
@@ -54,25 +48,15 @@ flow('Test Flow with IDs', 'FLOW-001', () => {
|
|
|
54
48
|
specs('Test event reaction specs', () => {
|
|
55
49
|
rule('System should react to test item creation', 'RULE-004', () => {
|
|
56
50
|
example('Notification sent when test item is created')
|
|
57
|
-
.when(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
])
|
|
67
|
-
.then([
|
|
68
|
-
{
|
|
69
|
-
commandRef: 'SendNotification',
|
|
70
|
-
exampleData: {
|
|
71
|
-
message: 'New test item created: Another Test Item',
|
|
72
|
-
recipientId: 'admin',
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
]);
|
|
51
|
+
.when({
|
|
52
|
+
id: 'test_789',
|
|
53
|
+
name: 'Another Test Item',
|
|
54
|
+
createdAt: new Date('2024-01-16T10:00:00Z'),
|
|
55
|
+
})
|
|
56
|
+
.then({
|
|
57
|
+
message: 'New test item created: Another Test Item',
|
|
58
|
+
recipientId: 'admin',
|
|
59
|
+
});
|
|
76
60
|
});
|
|
77
61
|
});
|
|
78
62
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-with-ids.narrative.js","sourceRoot":"","sources":["../../../src/samples/test-with-ids.narrative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"test-with-ids.narrative.js","sourceRoot":"","sources":["../../../src/samples/test-with-ids.narrative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAoC1D,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,GAAG,EAAE;IAC1C,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC;SACrC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAChB,MAAM,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,iDAAiD,EAAE,UAAU,EAAE,GAAG,EAAE;gBACvE,OAAO,CAAC,8CAA8C,CAAC;qBACpD,IAAI,CAAiB;oBACpB,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,WAAW;iBAClB,CAAC;qBACD,IAAI,CAAkB;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;iBAC5C,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,uCAAuC,EAAE,UAAU,EAAE,GAAG,EAAE;gBAC7D,OAAO,CAAC,2CAA2C,CAAC,CAAC,IAAI,CAAiB;oBACxE,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;gBACH,SAAS,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,gBAAgB,EAAE,WAAW,CAAC;SACjC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAChB,MAAM,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,4CAA4C,EAAE,UAAU,EAAE,GAAG,EAAE;gBAClE,OAAO,CAAC,6CAA6C,CAAC;qBACnD,IAAI,CAAkB;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;iBAC5C,CAAC;qBACD,IAAI,CAAgB;oBACnB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QACpD,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,2CAA2C,EAAE,UAAU,EAAE,GAAG,EAAE;gBACjE,OAAO,CAAC,6CAA6C,CAAC;qBACnD,IAAI,CAAkB;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,mBAAmB;oBACzB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;iBAC5C,CAAC;qBACD,IAAI,CAAmB;oBACtB,OAAO,EAAE,0CAA0C;oBACnD,WAAW,EAAE,OAAO;iBACrB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|