1+ import sequencify , { sequence } from '../../src/plugin/sequencify' ;
2+
3+ describe ( 'sequence' , ( ) => {
4+ it ( 'handles tasks with no dependencies' , ( ) => {
5+ const tasks = {
6+ task1 : { name : 'Task 1' , dep : [ ] } ,
7+ task2 : { name : 'Task 2' , dep : [ ] }
8+ } ;
9+ const results = [ ] ;
10+ const missing = [ ] ;
11+ const recursive = [ ] ;
12+ sequence ( { tasks, names : [ 'task1' , 'task2' ] , results, missing, recursive, nest : [ ] } ) ;
13+
14+ expect ( results ) . toEqual ( [ 'task1' , 'task2' ] ) ;
15+ expect ( missing ) . toEqual ( [ ] ) ;
16+ expect ( recursive ) . toEqual ( [ ] ) ;
17+ } ) ;
18+
19+ it ( 'correctly orders tasks based on dependencies' , ( ) => {
20+ const tasks = {
21+ task1 : { name : 'Task 1' , dep : [ ] } ,
22+ task2 : { name : 'Task 2' , dep : [ 'task1' ] }
23+ } ;
24+ const results = [ ] ;
25+ const missing = [ ] ;
26+ const recursive = [ ] ;
27+ sequence ( { tasks, names : [ 'task2' , 'task1' ] , results, missing, recursive, nest : [ ] } ) ;
28+
29+ expect ( results ) . toEqual ( [ 'task1' , 'task2' ] ) ;
30+ expect ( missing ) . toEqual ( [ ] ) ;
31+ expect ( recursive ) . toEqual ( [ ] ) ;
32+ } ) ;
33+
34+ it ( 'identifies missing tasks' , ( ) => {
35+ const tasks = {
36+ task1 : { name : 'Task 1' , dep : [ ] }
37+ } ;
38+ const results = [ ] ;
39+ const missing = [ ] ;
40+ const recursive = [ ] ;
41+ const nest = [ ]
42+ sequence ( { tasks, names : [ 'task2' ] , results, missing, recursive, nest } ) ;
43+
44+ expect ( results ) . toEqual ( [ 'task2' ] ) ;
45+ expect ( missing ) . toEqual ( [ 'task2' ] ) ;
46+ expect ( recursive ) . toEqual ( [ ] ) ;
47+ expect ( nest ) . toEqual ( [ ] ) ;
48+ } ) ;
49+
50+ it ( 'detects recursive dependencies' , ( ) => {
51+ const tasks = {
52+ task1 : { name : 'Task 1' , dep : [ 'task2' ] } ,
53+ task2 : { name : 'Task 2' , dep : [ 'task1' ] }
54+ } ;
55+ const results = [ ] ;
56+ const missing = [ ] ;
57+ const recursive = [ ] ;
58+ const nest = [ ]
59+ sequence ( { tasks, names : [ 'task1' , 'task2' ] , results, missing, recursive, nest } ) ;
60+
61+ expect ( results ) . toEqual ( [ 'task1' , 'task2' , 'task1' ] ) ;
62+ expect ( missing ) . toEqual ( [ ] ) ;
63+ expect ( recursive ) . toEqual ( [ [ 'task1' , 'task2' , 'task1' ] ] ) ;
64+ expect ( nest ) . toEqual ( [ ] ) ;
65+ } ) ;
66+ } ) ;
67+
68+ describe ( 'sequence' , ( ) => {
69+
70+ it ( 'should return tasks in sequence without dependencies' , ( ) => {
71+ const tasks = {
72+ task1 : { name : 'Task 1' , dep : [ ] } ,
73+ task2 : { name : 'Task 2' , dep : [ ] } ,
74+ task3 : { name : 'Task 3' , dep : [ ] }
75+ } ;
76+ const names = [ 'task1' , 'task2' , 'task3' ] ;
77+ const expected = {
78+ sequence : [ 'task1' , 'task2' , 'task3' ] ,
79+ missingTasks : [ ] ,
80+ recursiveDependencies : [ ]
81+ } ;
82+ expect ( sequencify ( tasks , names ) ) . toEqual ( expected ) ;
83+ } ) ;
84+
85+ it ( 'should handle tasks with dependencies' , ( ) => {
86+ const tasks = {
87+ task1 : { name : 'Task 1' , dep : [ ] } ,
88+ task2 : { name : 'Task 2' , dep : [ 'task1' ] } ,
89+ task3 : { name : 'Task 3' , dep : [ 'task2' ] }
90+ } ;
91+ const names = [ 'task3' , 'task2' , 'task1' ] ;
92+ const expected = {
93+ sequence : [ 'task1' , 'task2' , 'task3' ] ,
94+ missingTasks : [ ] ,
95+ recursiveDependencies : [ ]
96+ } ;
97+ expect ( sequencify ( tasks , names ) ) . toEqual ( expected ) ;
98+ } ) ;
99+
100+ it ( 'should identify missing tasks' , ( ) => {
101+ const tasks = {
102+ task1 : { name : 'Task 1' , dep : [ ] } ,
103+ task2 : { name : 'Task 2' , dep : [ 'task3' ] } // task3 is missing
104+ } ;
105+ const names = [ 'task1' , 'task2' ] ;
106+ const expected = {
107+ sequence : [ ] ,
108+ missingTasks : [ 'task2.task3' ] ,
109+ recursiveDependencies : [ ]
110+ } ;
111+ expect ( sequencify ( tasks , names ) ) . toEqual ( expected ) ;
112+ } ) ;
113+
114+ it ( 'should detect recursive dependencies' , ( ) => {
115+ const tasks = {
116+ task1 : { name : 'Task 1' , dep : [ 'task2' ] } ,
117+ task2 : { name : 'Task 2' , dep : [ 'task1' ] } // Recursive dependency
118+ } ;
119+ const names = [ 'task1' , 'task2' ] ;
120+ const expected = {
121+ sequence : [ ] ,
122+ missingTasks : [ ] ,
123+ recursiveDependencies : [ [ 'task1' , 'task2' , 'task1' ] ]
124+ } ;
125+ expect ( sequencify ( tasks , names ) ) . toEqual ( expected ) ;
126+ } ) ;
127+
128+ } ) ;
0 commit comments