1
1
import FormWizard from 'hmpo-form-wizard'
2
2
import { Response } from 'express'
3
- import Controller from './saveAndContinueController'
3
+ import Controller , { Progress , SectionCompleteRule } from './saveAndContinueController'
4
4
5
5
describe ( 'SaveAndContinueController' , ( ) => {
6
6
const controller = new Controller ( { route : '/' } )
7
7
8
- describe ( 'getSectionProgress ' , ( ) => {
8
+ describe ( 'getSectionProgressAnswers ' , ( ) => {
9
9
const conditionFn = jest . fn ( )
10
10
11
11
const buildRequestWith = ( {
@@ -41,7 +41,7 @@ describe('SaveAndContinueController', () => {
41
41
] ,
42
42
} )
43
43
44
- controller . getSectionProgress ( req , true )
44
+ controller . getSectionProgressAnswers ( req , true )
45
45
46
46
expect ( conditionFn ) . toHaveBeenCalledTimes ( 3 )
47
47
} )
@@ -51,7 +51,7 @@ describe('SaveAndContinueController', () => {
51
51
sectionProgressRules : [ { fieldCode : 'foo_section_complete' , conditionFn } ] ,
52
52
} )
53
53
54
- controller . getSectionProgress ( req , true )
54
+ controller . getSectionProgressAnswers ( req , true )
55
55
56
56
expect ( conditionFn ) . toHaveBeenLastCalledWith ( true , { } )
57
57
} )
@@ -61,7 +61,7 @@ describe('SaveAndContinueController', () => {
61
61
sectionProgressRules : [ { fieldCode : 'foo_section_complete' , conditionFn } ] ,
62
62
} )
63
63
64
- controller . getSectionProgress ( req , false )
64
+ controller . getSectionProgressAnswers ( req , false )
65
65
66
66
expect ( conditionFn ) . toHaveBeenLastCalledWith ( false , { } )
67
67
} )
@@ -73,7 +73,7 @@ describe('SaveAndContinueController', () => {
73
73
formValues,
74
74
} )
75
75
76
- controller . getSectionProgress ( req , true )
76
+ controller . getSectionProgressAnswers ( req , true )
77
77
78
78
expect ( conditionFn ) . toHaveBeenLastCalledWith ( true , formValues )
79
79
} )
@@ -87,10 +87,9 @@ describe('SaveAndContinueController', () => {
87
87
] ,
88
88
} )
89
89
90
- const result = controller . getSectionProgress ( req , true )
90
+ const result = controller . getSectionProgressAnswers ( req , true )
91
91
92
92
expect ( result ) . toEqual ( {
93
- assessment_complete : 'YES' ,
94
93
foo_section_complete : 'YES' ,
95
94
bar_section_complete : 'YES' ,
96
95
baz_section_complete : 'YES' ,
@@ -106,17 +105,82 @@ describe('SaveAndContinueController', () => {
106
105
] ,
107
106
} )
108
107
109
- const result = controller . getSectionProgress ( req , true )
108
+ const result = controller . getSectionProgressAnswers ( req , true )
110
109
111
110
expect ( result ) . toEqual ( {
112
- assessment_complete : 'NO' ,
113
111
foo_section_complete : 'YES' ,
114
112
bar_section_complete : 'NO' ,
115
113
baz_section_complete : 'YES' ,
116
114
} )
117
115
} )
118
116
} )
119
117
118
+ describe ( 'getAssessmentProgress' , ( ) => {
119
+ it ( 'marks the section as complete if all subsections are complete' , ( ) => {
120
+ const answers : FormWizard . Answers = {
121
+ foo_section_complete : 'YES' ,
122
+ bar_section_complete : 'YES' ,
123
+ }
124
+
125
+ const sectionCompleteRules : SectionCompleteRule [ ] = [
126
+ { sectionName : 'test_section' , fieldCodes : [ 'foo_section_complete' , 'bar_section_complete' ] } ,
127
+ ]
128
+
129
+ const result = controller . getAssessmentProgress ( answers , sectionCompleteRules )
130
+
131
+ expect ( result ) . toEqual ( {
132
+ test_section : true ,
133
+ } )
134
+ } )
135
+
136
+ it ( 'marks the section as incomplete is a subsection is incomplete' , ( ) => {
137
+ const answers : FormWizard . Answers = {
138
+ foo_section_complete : 'YES' ,
139
+ bar_section_complete : 'NO' ,
140
+ }
141
+
142
+ const sectionCompleteRules : SectionCompleteRule [ ] = [
143
+ { sectionName : 'test_section' , fieldCodes : [ 'foo_section_complete' , 'bar_section_complete' ] } ,
144
+ ]
145
+
146
+ const result = controller . getAssessmentProgress ( answers , sectionCompleteRules )
147
+
148
+ expect ( result ) . toEqual ( {
149
+ test_section : false ,
150
+ } )
151
+ } )
152
+ } )
153
+
154
+ describe ( 'getAssessmentCompletionAnswers' , ( ) => {
155
+ it ( 'marks the assessment as complete if all sections are complete' , ( ) => {
156
+ const progress : Progress = {
157
+ foo_section_complete : true ,
158
+ bar_section_complete : true ,
159
+ baz_section_complete : true ,
160
+ }
161
+
162
+ const result = controller . getAssessmentCompletionAnswers ( progress )
163
+
164
+ expect ( result ) . toEqual ( {
165
+ assessment_complete : 'YES' ,
166
+ } )
167
+ } )
168
+
169
+ it ( 'marks the assessment as incomplete if a section is incomplete' , ( ) => {
170
+ const progress : Progress = {
171
+ foo_section_complete : true ,
172
+ bar_section_complete : false ,
173
+ baz_section_complete : true ,
174
+ }
175
+
176
+ const result = controller . getAssessmentCompletionAnswers ( progress )
177
+
178
+ expect ( result ) . toEqual ( {
179
+ assessment_complete : 'NO' ,
180
+ } )
181
+ } )
182
+ } )
183
+
120
184
describe ( 'updateAssessmentProgress' , ( ) => {
121
185
const buildRequestWith = ( { persistedAnswers = { } } : { persistedAnswers ?: Record < string , string | string [ ] > } ) =>
122
186
( {
@@ -161,9 +225,9 @@ describe('SaveAndContinueController', () => {
161
225
] ,
162
226
} )
163
227
164
- controller . updateAssessmentProgress ( req , res )
228
+ const progress = controller . getAssessmentProgress ( req . form . persistedAnswers , res . locals . form . sectionProgressRules )
165
229
166
- expect ( res . locals . sectionProgress ? .accommodation ) . toEqual ( true )
230
+ expect ( progress . accommodation ) . toEqual ( true )
167
231
} )
168
232
169
233
it ( 'sets the sections to incomplete when their required fields have not been completed' , ( ) => {
@@ -188,11 +252,11 @@ describe('SaveAndContinueController', () => {
188
252
] ,
189
253
} )
190
254
191
- controller . updateAssessmentProgress ( req , res )
255
+ const progress = controller . getAssessmentProgress ( req . form . persistedAnswers , res . locals . form . sectionProgressRules )
192
256
193
- expect ( res . locals . sectionProgress ? .finance ) . toEqual ( false )
194
- expect ( res . locals . sectionProgress ?. [ 'alcohol-use' ] ) . toEqual ( false )
195
- expect ( res . locals . sectionProgress ?. [ 'drug-use' ] ) . toEqual ( false )
257
+ expect ( progress . finance ) . toEqual ( false )
258
+ expect ( progress [ 'alcohol-use' ] ) . toEqual ( false )
259
+ expect ( progress [ 'drug-use' ] ) . toEqual ( false )
196
260
} )
197
261
} )
198
262
} )
0 commit comments