@@ -2,6 +2,20 @@ import { isIntegrationTest } from 'src/common/utils';
22import { BuildSequence } from '../types' ;
33import { executeBuildSequence } from './utils' ;
44import { Logger } from '@nestjs/common' ;
5+ import { ProjectInitHandler } from '../handlers/project-init' ;
6+ import { PRDHandler } from '../handlers/product-manager/product-requirements-document/prd' ;
7+ import { UXSMDHandler } from '../handlers/ux/sitemap-document' ;
8+ import { UXSMSHandler } from '../handlers/ux/sitemap-structure' ;
9+ import { UXDMDHandler } from '../handlers/ux/datamap' ;
10+ import { DBRequirementHandler } from '../handlers/database/requirements-document' ;
11+ import { FileStructureHandler } from '../handlers/file-manager/file-structure' ;
12+ import { UXSMSPageByPageHandler } from '../handlers/ux/sitemap-structure/sms-page' ;
13+ import { DBSchemaHandler } from '../handlers/database/schemas/schemas' ;
14+ import { FileFAHandler } from '../handlers/file-manager/file-arch' ;
15+ import { BackendRequirementHandler } from '../handlers/backend/requirements-document' ;
16+ import { BackendCodeHandler } from '../handlers/backend/code-generate' ;
17+ import { BackendFileReviewHandler } from '../handlers/backend/file-review/file-review' ;
18+
519( isIntegrationTest ? describe : describe . skip ) ( 'Build Sequence Test' , ( ) => {
620 it ( 'should execute build sequence successfully' , async ( ) => {
721 const sequence : BuildSequence = {
@@ -10,144 +24,89 @@ import { Logger } from '@nestjs/common';
1024 name : 'Spotify-like Music Web' ,
1125 description : 'Users can play music' ,
1226 databaseType : 'SQLite' ,
13- steps : [
27+ nodes : [
28+ {
29+ handler : ProjectInitHandler ,
30+ name : 'Project Folders Setup' ,
31+ } ,
32+ {
33+ handler : PRDHandler ,
34+ name : 'Project Requirements Document Node' ,
35+ } ,
36+ {
37+ handler : UXSMDHandler ,
38+ name : 'UX Sitemap Document Node' ,
39+ } ,
40+ {
41+ handler : UXSMSHandler ,
42+ name : 'UX Sitemap Structure Node' ,
43+ // requires: ['op:UX:SMD'],
44+ } ,
1445 {
15- id : 'step-0' ,
16- name : 'Project Initialization' ,
17- parallel : false ,
18- nodes : [
19- {
20- id : 'op:PROJECT::STATE:SETUP' ,
21- name : 'Project Folders Setup' ,
22- } ,
23- ] ,
46+ handler : UXDMDHandler ,
47+ name : 'UX DataMap Document Node' ,
48+ // requires: ['op:UX:SMD'],
2449 } ,
2550 {
26- id : 'step-1' ,
27- name : 'Initial Analysis' ,
28- parallel : false ,
29- nodes : [
30- {
31- id : 'op:PRD' ,
32- name : 'Project Requirements Document Node' ,
33- } ,
34- ] ,
51+ handler : DBRequirementHandler ,
52+ name : 'Database Requirements Node' ,
53+ // requires: ['op:UX:DATAMAP:DOC'],
3554 } ,
3655 {
37- id : 'step-2' ,
38- name : 'UX Base Document Generation' ,
39- parallel : false ,
40- nodes : [
41- {
42- id : 'op:UX:SMD' ,
43- name : 'UX Sitemap Document Node' ,
44- requires : [ 'op:PRD' ] ,
45- } ,
46- ] ,
56+ handler : FileStructureHandler ,
57+ name : 'File Structure Generation' ,
58+ // requires: ['op:UX:SMD', 'op:UX:DATAMAP:DOC'],
59+ options : {
60+ projectPart : 'frontend' ,
61+ } ,
4762 } ,
4863 {
49- id : 'step-3' ,
50- name : 'Parallel UX Processing' ,
51- parallel : true ,
52- nodes : [
53- {
54- id : 'op:UX:SMS' ,
55- name : 'UX Sitemap Structure Node' ,
56- requires : [ 'op:UX:SMD' ] ,
57- } ,
58- {
59- id : 'op:UX:DATAMAP:DOC' ,
60- name : 'UX DataMap Document Node' ,
61- requires : [ 'op:UX:SMD' ] ,
62- } ,
63- ] ,
64+ handler : UXSMSPageByPageHandler ,
65+ name : 'Level 2 UX Sitemap Structure Node details' ,
66+ // requires: ['op:UX:SMS'],
6467 } ,
6568 {
66- id : 'step-4' ,
67- name : 'Parallel Project Structure' ,
68- parallel : true ,
69- nodes : [
70- {
71- id : 'op:DATABASE_REQ' ,
72- name : 'Database Requirements Node' ,
73- requires : [ 'op:UX:DATAMAP:DOC' ] ,
74- } ,
75- {
76- id : 'op:FILE:STRUCT' ,
77- name : 'File Structure Generation' ,
78- requires : [ 'op:UX:SMD' , 'op:UX:DATAMAP:DOC' ] ,
79- options : {
80- projectPart : 'frontend' ,
81- } ,
82- } ,
83- {
84- id : 'op:UX:SMS:LEVEL2' ,
85- name : 'Level 2 UX Sitemap Structure Node details' ,
86- requires : [ 'op:UX:SMS' ] ,
87- } ,
88- ] ,
69+ handler : DBSchemaHandler ,
70+ name : 'Database Schemas Node' ,
71+ // requires: ['op:DATABASE_REQ'],
8972 } ,
9073 {
91- id : 'step-5' ,
92- name : 'Parallel Implementation' ,
93- parallel : true ,
94- nodes : [
95- {
96- id : 'op:DATABASE:SCHEMAS' ,
97- name : 'Database Schemas Node' ,
98- requires : [ 'op:DATABASE_REQ' ] ,
99- } ,
100- {
101- id : 'op:FILE:ARCH' ,
102- name : 'File Arch' ,
103- requires : [ 'op:FILE:STRUCT' , 'op:UX:DATAMAP:DOC' ] ,
104- } ,
105- {
106- id : 'op:BACKEND:REQ' ,
107- name : 'Backend Requirements Node' ,
108- requires : [ 'op:DATABASE_REQ' , 'op:UX:DATAMAP:DOC' , 'op:UX:SMD' ] ,
109- } ,
110- ] ,
74+ handler : FileFAHandler ,
75+ name : 'File Arch' ,
76+ // requires: ['op:FILE:STRUCT', 'op:UX:DATAMAP:DOC'],
11177 } ,
11278 {
113- id : 'step-6' ,
114- name : 'Final Code Generation' ,
115- parallel : false ,
116- nodes : [
117- {
118- id : 'op:BACKEND:CODE' ,
119- name : 'Backend Code Generator Node' ,
120- requires : [
121- 'op:DATABASE:SCHEMAS' ,
122- 'op:UX:DATAMAP:DOC' ,
123- 'op:BACKEND:REQ' ,
124- ] ,
125- } ,
126- {
127- id : 'op:FRONTEND:CODE' ,
128- name : 'Frontend Code Generator Node' ,
129- } ,
130- ] ,
79+ handler : BackendRequirementHandler ,
80+ name : 'Backend Requirements Node' ,
81+ // requires: ['op:DATABASE_REQ', 'op:UX:DATAMAP:DOC', 'op:UX:SMD'],
13182 } ,
132- // TODO: code reviewer
13383 {
134- id : 'step-7' ,
135- name : 'Backend Code Review' ,
136- parallel : false ,
137- nodes : [
138- {
139- id : 'op:BACKEND:FILE:REVIEW' ,
140- name : 'Backend File Review Node' ,
141- requires : [ 'op:BACKEND:CODE' , 'op:BACKEND:REQ' ] ,
142- } ,
143- ] ,
84+ handler : BackendCodeHandler ,
85+ name : 'Backend Code Generator Node' ,
86+ // requires: [
87+ // 'op:DATABASE:SCHEMAS',
88+ // 'op:UX:DATAMAP:DOC',
89+ // 'op:BACKEND:REQ',
90+ // ],
91+ } ,
92+ // {
93+ // handler:FrontendCodeHandler,
94+ // id: 'op:FRONTEND:CODE',
95+ // name: 'Frontend Code Generator Node',
96+ // },
97+ {
98+ handler : BackendFileReviewHandler ,
99+ name : 'Backend File Review Node' ,
100+ // requires: ['op:BACKEND:CODE', 'op:BACKEND:REQ'],
144101 } ,
145102 ] ,
146103 } ;
147104
148105 const result = await executeBuildSequence ( 'fullstack-code-gen' , sequence ) ;
106+
107+ // Assertion: ensure the build sequence runs successfully
149108 expect ( result . success ) . toBe ( true ) ;
150109 expect ( result . metrics ) . toBeDefined ( ) ;
151110 Logger . log ( `Logs saved to: ${ result . logFolderPath } ` ) ;
152- } , 300000 ) ;
111+ } , 300000 ) ; // Set timeout to 5 minutes
153112} ) ;
0 commit comments