@nahisaho/musubix-core 1.0.4 → 1.0.6
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/dist/cli/commands/codegen.d.ts.map +1 -1
- package/dist/cli/commands/codegen.js +381 -26
- package/dist/cli/commands/codegen.js.map +1 -1
- package/dist/cli/commands/design.d.ts.map +1 -1
- package/dist/cli/commands/design.js +125 -31
- package/dist/cli/commands/design.js.map +1 -1
- package/dist/cli/commands/test.d.ts.map +1 -1
- package/dist/cli/commands/test.js +175 -4
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/trace.d.ts.map +1 -1
- package/dist/cli/commands/trace.js +42 -7
- package/dist/cli/commands/trace.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -331,46 +331,140 @@ export function registerDesignCommand(program) {
|
|
|
331
331
|
function generateC4Model(content, level) {
|
|
332
332
|
const elements = [];
|
|
333
333
|
const relationships = [];
|
|
334
|
-
// Extract entities from content
|
|
335
|
-
const systemMatches = content.match(/\b(?:system|service|application|component|module)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
|
|
336
|
-
const actorMatches = content.match(/\b(?:user|admin|client|actor)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
|
|
337
334
|
const seenIds = new Set();
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
335
|
+
// Check if this is an EARS requirements document
|
|
336
|
+
const isEarsDoc = content.includes('EARS') || content.includes('SHALL') || content.includes('REQ-');
|
|
337
|
+
if (isEarsDoc) {
|
|
338
|
+
// Extract components from EARS requirements
|
|
339
|
+
const contentLower = content.toLowerCase();
|
|
340
|
+
// Add user/actor if mentioned
|
|
341
|
+
if (contentLower.includes('user') || contentLower.includes('ユーザー')) {
|
|
343
342
|
elements.push({
|
|
344
|
-
id,
|
|
345
|
-
name,
|
|
346
|
-
description:
|
|
343
|
+
id: 'user',
|
|
344
|
+
name: 'User',
|
|
345
|
+
description: 'System user who interacts with the application',
|
|
347
346
|
type: 'person',
|
|
348
347
|
});
|
|
349
348
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
349
|
+
// Infer system components from EARS requirements
|
|
350
|
+
const componentInferences = [
|
|
351
|
+
{ keywords: ['task', 'タスク'], name: 'TaskService', desc: 'Manages task lifecycle and operations' },
|
|
352
|
+
{ keywords: ['notification', 'notify', 'alert', '通知'], name: 'NotificationService', desc: 'Handles user notifications and alerts' },
|
|
353
|
+
{ keywords: ['persist', 'store', 'save', 'storage', '保存', '永続'], name: 'DataRepository', desc: 'Handles data persistence and storage' },
|
|
354
|
+
{ keywords: ['authenticate', 'auth', 'login', '認証'], name: 'AuthService', desc: 'Manages authentication and authorization' },
|
|
355
|
+
{ keywords: ['priority', '優先'], name: 'PriorityManager', desc: 'Manages item prioritization' },
|
|
356
|
+
{ keywords: ['deadline', 'schedule', '期限', 'スケジュール'], name: 'ScheduleService', desc: 'Manages scheduling and deadlines' },
|
|
357
|
+
{ keywords: ['archive', 'アーカイブ'], name: 'ArchiveService', desc: 'Handles completed item archiving' },
|
|
358
|
+
{ keywords: ['validation', 'validate', 'confirm', '確認'], name: 'ValidationService', desc: 'Validates user input and actions' },
|
|
359
|
+
];
|
|
360
|
+
for (const inference of componentInferences) {
|
|
361
|
+
if (inference.keywords.some(kw => contentLower.includes(kw))) {
|
|
362
|
+
const id = inference.name.toLowerCase().replace(/service|manager|repository/gi, '');
|
|
363
|
+
if (!seenIds.has(id)) {
|
|
364
|
+
seenIds.add(id);
|
|
365
|
+
elements.push({
|
|
366
|
+
id,
|
|
367
|
+
name: inference.name,
|
|
368
|
+
description: inference.desc,
|
|
369
|
+
type: level === 'context' ? 'software_system' : level === 'container' ? 'container' : 'component',
|
|
370
|
+
technology: 'TypeScript',
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// If no specific components found, create a generic main service
|
|
376
|
+
if (elements.filter(e => e.type !== 'person').length === 0) {
|
|
358
377
|
elements.push({
|
|
359
|
-
id,
|
|
360
|
-
name,
|
|
361
|
-
description:
|
|
362
|
-
type: level === 'context' ? 'software_system' :
|
|
378
|
+
id: 'main-service',
|
|
379
|
+
name: 'MainService',
|
|
380
|
+
description: 'Core application service',
|
|
381
|
+
type: level === 'context' ? 'software_system' : 'component',
|
|
382
|
+
technology: 'TypeScript',
|
|
363
383
|
});
|
|
364
384
|
}
|
|
385
|
+
// Generate relationships based on common patterns
|
|
386
|
+
const persons = elements.filter(e => e.type === 'person');
|
|
387
|
+
const services = elements.filter(e => e.type !== 'person');
|
|
388
|
+
// Users interact with services
|
|
389
|
+
for (const person of persons) {
|
|
390
|
+
for (const service of services) {
|
|
391
|
+
if (service.name.includes('Service') || service.name.includes('Manager')) {
|
|
392
|
+
relationships.push({
|
|
393
|
+
source: person.id,
|
|
394
|
+
target: service.id,
|
|
395
|
+
description: 'uses',
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
// Services interact with repository
|
|
401
|
+
const repository = services.find(s => s.name.includes('Repository'));
|
|
402
|
+
if (repository) {
|
|
403
|
+
for (const service of services) {
|
|
404
|
+
if (service.id !== repository.id && !service.name.includes('Notification')) {
|
|
405
|
+
relationships.push({
|
|
406
|
+
source: service.id,
|
|
407
|
+
target: repository.id,
|
|
408
|
+
description: 'stores data in',
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// Notification service receives events from other services
|
|
414
|
+
const notificationService = services.find(s => s.name.includes('Notification'));
|
|
415
|
+
if (notificationService) {
|
|
416
|
+
for (const service of services) {
|
|
417
|
+
if (service.id !== notificationService.id && service.name.includes('Service')) {
|
|
418
|
+
relationships.push({
|
|
419
|
+
source: service.id,
|
|
420
|
+
target: notificationService.id,
|
|
421
|
+
description: 'sends notifications via',
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
365
426
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
427
|
+
else {
|
|
428
|
+
// Original logic for non-EARS documents
|
|
429
|
+
const systemMatches = content.match(/\b(?:system|service|application|component|module)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
|
|
430
|
+
const actorMatches = content.match(/\b(?:user|admin|client|actor)\s+["']?([A-Za-z0-9_-]+)["']?/gi) || [];
|
|
431
|
+
for (const match of actorMatches) {
|
|
432
|
+
const name = match.split(/\s+/).pop()?.replace(/["']/g, '') || 'Unknown';
|
|
433
|
+
const id = `person-${name.toLowerCase()}`;
|
|
434
|
+
if (!seenIds.has(id)) {
|
|
435
|
+
seenIds.add(id);
|
|
436
|
+
elements.push({
|
|
437
|
+
id,
|
|
438
|
+
name,
|
|
439
|
+
description: `${name} user/actor`,
|
|
440
|
+
type: 'person',
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
for (const match of systemMatches) {
|
|
445
|
+
const words = match.split(/\s+/);
|
|
446
|
+
const type = words[0].toLowerCase();
|
|
447
|
+
const name = words.pop()?.replace(/["']/g, '') || 'Unknown';
|
|
448
|
+
const id = `${type}-${name.toLowerCase()}`;
|
|
449
|
+
if (!seenIds.has(id)) {
|
|
450
|
+
seenIds.add(id);
|
|
451
|
+
elements.push({
|
|
452
|
+
id,
|
|
453
|
+
name,
|
|
454
|
+
description: `${name} ${type}`,
|
|
455
|
+
type: level === 'context' ? 'software_system' : level === 'container' ? 'container' : 'component',
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
// Generate relationships for non-EARS documents
|
|
460
|
+
const elementIds = elements.map(e => e.id);
|
|
461
|
+
for (let i = 0; i < elementIds.length - 1; i++) {
|
|
462
|
+
relationships.push({
|
|
463
|
+
source: elementIds[i],
|
|
464
|
+
target: elementIds[i + 1],
|
|
465
|
+
description: 'interacts with',
|
|
466
|
+
});
|
|
467
|
+
}
|
|
374
468
|
}
|
|
375
469
|
return {
|
|
376
470
|
level,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../../src/cli/commands/design.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../../src/cli/commands/design.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqJ1D;AAED;;GAEG;AACH,iBAAS,oBAAoB,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4F/C;AA8QD;;GAEG;AACH,iBAAe,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA6BnE;AAuDD;;GAEG;AACH,iBAAS,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAwBjF;AA2FD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,wBAAwB,GACzB,CAAC"}
|
|
@@ -89,7 +89,7 @@ export function registerTestCommand(program) {
|
|
|
89
89
|
// test generate
|
|
90
90
|
test
|
|
91
91
|
.command('generate <file>')
|
|
92
|
-
.description('Generate tests for source file')
|
|
92
|
+
.description('Generate tests for source file or requirements document')
|
|
93
93
|
.option('-o, --output <file>', 'Output file')
|
|
94
94
|
.option('-f, --framework <name>', 'Test framework', 'vitest')
|
|
95
95
|
.option('-s, --style <style>', 'Test style (unit|integration|e2e)', 'unit')
|
|
@@ -100,8 +100,15 @@ export function registerTestCommand(program) {
|
|
|
100
100
|
const content = await readFile(filePath, 'utf-8');
|
|
101
101
|
const framework = options.framework ?? 'vitest';
|
|
102
102
|
const style = options.style ?? 'unit';
|
|
103
|
-
//
|
|
104
|
-
const
|
|
103
|
+
// Check if this is an EARS requirements document
|
|
104
|
+
const isEarsDoc = content.includes('EARS') || content.includes('SHALL') || content.includes('REQ-');
|
|
105
|
+
let tests;
|
|
106
|
+
if (isEarsDoc) {
|
|
107
|
+
tests = generateTestsFromRequirements(filePath, content, framework, style);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
tests = generateTestsForFile(filePath, content, framework, style);
|
|
111
|
+
}
|
|
105
112
|
// Determine output path
|
|
106
113
|
let outputPath;
|
|
107
114
|
if (options.output) {
|
|
@@ -110,7 +117,7 @@ export function registerTestCommand(program) {
|
|
|
110
117
|
else {
|
|
111
118
|
const dir = dirname(filePath);
|
|
112
119
|
const name = basename(filePath, extname(filePath));
|
|
113
|
-
const ext = framework === 'pytest' ? '.py' :
|
|
120
|
+
const ext = framework === 'pytest' ? '.py' : '.ts';
|
|
114
121
|
outputPath = resolve(dir, '__tests__', `${name}.test${ext}`);
|
|
115
122
|
}
|
|
116
123
|
await mkdir(dirname(outputPath), { recursive: true });
|
|
@@ -291,6 +298,170 @@ function generateTestsForFile(filePath, content, framework, style) {
|
|
|
291
298
|
}
|
|
292
299
|
return [{ content: lines.join('\n'), testCount }];
|
|
293
300
|
}
|
|
301
|
+
/**
|
|
302
|
+
* Extract EARS requirements from content
|
|
303
|
+
*/
|
|
304
|
+
function extractEarsRequirements(content) {
|
|
305
|
+
const requirements = [];
|
|
306
|
+
// Match EARS requirements from table
|
|
307
|
+
// Format: | REQ-XX-001 | pattern | P0 | description |
|
|
308
|
+
const tableMatches = content.matchAll(/\|\s*(REQ-[\w-]+)\s*\|\s*(\w+)\s*\|\s*(P\d)\s*\|\s*([^|]+)\|/g);
|
|
309
|
+
for (const match of tableMatches) {
|
|
310
|
+
requirements.push({
|
|
311
|
+
id: match[1],
|
|
312
|
+
pattern: match[2].toLowerCase(),
|
|
313
|
+
priority: match[3],
|
|
314
|
+
description: match[4].trim(),
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
// Also extract from detailed sections
|
|
318
|
+
// Format: ### REQ-XX-001 (Pattern - P0)
|
|
319
|
+
// > The system SHALL...
|
|
320
|
+
const detailMatches = content.matchAll(/###\s*(REQ-[\w-]+)(?:\s*\((\w+)(?:\s*-\s*(P\d))?\))?[\s\S]*?>\s*(.+?)(?=\n\n|\n###|$)/g);
|
|
321
|
+
for (const match of detailMatches) {
|
|
322
|
+
const existing = requirements.find(r => r.id === match[1]);
|
|
323
|
+
if (!existing) {
|
|
324
|
+
requirements.push({
|
|
325
|
+
id: match[1],
|
|
326
|
+
pattern: (match[2] || 'ubiquitous').toLowerCase(),
|
|
327
|
+
priority: match[3] || 'P1',
|
|
328
|
+
description: match[4].trim(),
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return requirements;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Generate tests from EARS requirements
|
|
336
|
+
*/
|
|
337
|
+
function generateTestsFromRequirements(filePath, content, framework, _style) {
|
|
338
|
+
const template = TEST_TEMPLATES[framework] || TEST_TEMPLATES.vitest;
|
|
339
|
+
const filename = basename(filePath, extname(filePath));
|
|
340
|
+
const requirements = extractEarsRequirements(content);
|
|
341
|
+
if (requirements.length === 0) {
|
|
342
|
+
return [{ content: `// No EARS requirements found in ${filename}`, testCount: 0 }];
|
|
343
|
+
}
|
|
344
|
+
const lines = [];
|
|
345
|
+
let testCount = 0;
|
|
346
|
+
// Header
|
|
347
|
+
lines.push(template.header(filename));
|
|
348
|
+
lines.push('');
|
|
349
|
+
lines.push(`/**`);
|
|
350
|
+
lines.push(` * EARS Requirements Test Suite`);
|
|
351
|
+
lines.push(` * Generated from: ${basename(filePath)}`);
|
|
352
|
+
lines.push(` * Total Requirements: ${requirements.length}`);
|
|
353
|
+
lines.push(` */`);
|
|
354
|
+
lines.push('');
|
|
355
|
+
// Group requirements by pattern
|
|
356
|
+
const byPattern = {};
|
|
357
|
+
for (const req of requirements) {
|
|
358
|
+
if (!byPattern[req.pattern]) {
|
|
359
|
+
byPattern[req.pattern] = [];
|
|
360
|
+
}
|
|
361
|
+
byPattern[req.pattern].push(req);
|
|
362
|
+
}
|
|
363
|
+
// Generate tests for each pattern type
|
|
364
|
+
for (const [pattern, reqs] of Object.entries(byPattern)) {
|
|
365
|
+
const patternName = pattern.charAt(0).toUpperCase() + pattern.slice(1);
|
|
366
|
+
lines.push(template.describe(`${patternName} Requirements`));
|
|
367
|
+
lines.push('');
|
|
368
|
+
for (const req of reqs) {
|
|
369
|
+
// Extract key verbs and objects from description
|
|
370
|
+
const descShort = req.description.length > 60
|
|
371
|
+
? req.description.substring(0, 60) + '...'
|
|
372
|
+
: req.description;
|
|
373
|
+
lines.push(` // ${req.id}: ${descShort}`);
|
|
374
|
+
lines.push(` ${template.describe(req.id)}`);
|
|
375
|
+
// Generate pattern-specific tests
|
|
376
|
+
switch (req.pattern) {
|
|
377
|
+
case 'ubiquitous':
|
|
378
|
+
// SHALL tests - always true requirements
|
|
379
|
+
lines.push(template.it(`should satisfy: ${req.id}`));
|
|
380
|
+
lines.push(` // Requirement: ${req.description}`);
|
|
381
|
+
lines.push(` // TODO: Implement test for ubiquitous requirement`);
|
|
382
|
+
lines.push(` expect(true).toBe(true); // Placeholder`);
|
|
383
|
+
lines.push(' });');
|
|
384
|
+
testCount++;
|
|
385
|
+
break;
|
|
386
|
+
case 'event-driven':
|
|
387
|
+
// WHEN tests - triggered by events
|
|
388
|
+
lines.push(template.it(`should respond when event triggers (${req.id})`));
|
|
389
|
+
lines.push(` // Requirement: ${req.description}`);
|
|
390
|
+
lines.push(` // Pattern: WHEN [trigger] THEN [response]`);
|
|
391
|
+
lines.push(` // TODO: Implement event trigger and verify response`);
|
|
392
|
+
lines.push(` const triggered = false; // Simulate event`);
|
|
393
|
+
lines.push(` expect(triggered).toBe(false); // Should become true after implementation`);
|
|
394
|
+
lines.push(' });');
|
|
395
|
+
testCount++;
|
|
396
|
+
break;
|
|
397
|
+
case 'state-driven':
|
|
398
|
+
// WHILE tests - state-based requirements
|
|
399
|
+
lines.push(template.it(`should maintain behavior while in state (${req.id})`));
|
|
400
|
+
lines.push(` // Requirement: ${req.description}`);
|
|
401
|
+
lines.push(` // Pattern: WHILE [state] MAINTAIN [behavior]`);
|
|
402
|
+
lines.push(` // TODO: Set up state and verify behavior is maintained`);
|
|
403
|
+
lines.push(` const state = 'active';`);
|
|
404
|
+
lines.push(` expect(state).toBe('active'); // Verify state`);
|
|
405
|
+
lines.push(' });');
|
|
406
|
+
testCount++;
|
|
407
|
+
break;
|
|
408
|
+
case 'unwanted':
|
|
409
|
+
// SHALL NOT tests - negative requirements
|
|
410
|
+
lines.push(template.it(`should NOT allow prohibited behavior (${req.id})`));
|
|
411
|
+
lines.push(` // Requirement: ${req.description}`);
|
|
412
|
+
lines.push(` // Pattern: SHALL NOT [prohibited behavior]`);
|
|
413
|
+
lines.push(` // TODO: Attempt prohibited action and verify it's blocked`);
|
|
414
|
+
lines.push(` const prohibited = () => { /* action */ };`);
|
|
415
|
+
lines.push(` // expect(prohibited).toThrow(); // Should throw or return error`);
|
|
416
|
+
lines.push(` expect(true).toBe(true); // Placeholder - implement actual check`);
|
|
417
|
+
lines.push(' });');
|
|
418
|
+
testCount++;
|
|
419
|
+
break;
|
|
420
|
+
case 'optional':
|
|
421
|
+
// IF-THEN tests - conditional requirements
|
|
422
|
+
lines.push(template.it(`should conditionally execute (${req.id})`));
|
|
423
|
+
lines.push(` // Requirement: ${req.description}`);
|
|
424
|
+
lines.push(` // Pattern: IF [condition] THEN [action]`);
|
|
425
|
+
lines.push(` // TODO: Test with condition true and false`);
|
|
426
|
+
lines.push(` const condition = true;`);
|
|
427
|
+
lines.push(` if (condition) {`);
|
|
428
|
+
lines.push(` expect(true).toBe(true); // Action should occur`);
|
|
429
|
+
lines.push(` }`);
|
|
430
|
+
lines.push(' });');
|
|
431
|
+
testCount++;
|
|
432
|
+
break;
|
|
433
|
+
default:
|
|
434
|
+
lines.push(template.it(`should implement ${req.id}`));
|
|
435
|
+
lines.push(` // Requirement: ${req.description}`);
|
|
436
|
+
lines.push(` expect(true).toBe(true); // TODO: Implement`);
|
|
437
|
+
lines.push(' });');
|
|
438
|
+
testCount++;
|
|
439
|
+
}
|
|
440
|
+
// Add priority-based test for P0 requirements
|
|
441
|
+
if (req.priority === 'P0') {
|
|
442
|
+
lines.push(template.it(`[P0 Critical] should be fully implemented (${req.id})`));
|
|
443
|
+
lines.push(` // This is a P0 (critical) requirement - must be implemented`);
|
|
444
|
+
lines.push(` // TODO: Add comprehensive test coverage`);
|
|
445
|
+
lines.push(` expect(true).toBe(true); // Placeholder`);
|
|
446
|
+
lines.push(' });');
|
|
447
|
+
testCount++;
|
|
448
|
+
}
|
|
449
|
+
lines.push(' });'); // Close inner describe
|
|
450
|
+
lines.push('');
|
|
451
|
+
}
|
|
452
|
+
lines.push(template.close); // Close pattern describe
|
|
453
|
+
lines.push('');
|
|
454
|
+
}
|
|
455
|
+
// Add traceability summary
|
|
456
|
+
lines.push('/**');
|
|
457
|
+
lines.push(' * Traceability Matrix');
|
|
458
|
+
lines.push(' * ');
|
|
459
|
+
for (const req of requirements) {
|
|
460
|
+
lines.push(` * ${req.id} -> TST-${req.id.replace('REQ-', '')}`);
|
|
461
|
+
}
|
|
462
|
+
lines.push(' */');
|
|
463
|
+
return [{ content: lines.join('\n'), testCount }];
|
|
464
|
+
}
|
|
294
465
|
/**
|
|
295
466
|
* Extract exports from content
|
|
296
467
|
*/
|