@@ -37,7 +37,8 @@ const validJson: Partial<T.Tutorial> = {
37
37
{
38
38
id :"1.1" ,
39
39
content :"The first step" ,
40
- setup :{ commits :[ ] } ,
40
+ setup :{ commits :[ "abcdefa" ] } ,
41
+ solution :{ commits :[ "abcdefb" ] } ,
41
42
} ,
42
43
] ,
43
44
} ,
@@ -74,4 +75,60 @@ describe("validate tutorial", () => {
74
75
const valid = validateTutorial ( json ) ;
75
76
expect ( valid ) . toBe ( true ) ;
76
77
} ) ;
78
+ it ( "should allow a step with no solution" , ( ) => {
79
+ const json = {
80
+ ...validJson ,
81
+ levels :[
82
+ {
83
+ id :"1" ,
84
+ title :"Level 1" ,
85
+ summary :"summary" ,
86
+ content :"content" ,
87
+ steps :[
88
+ {
89
+ id :"1.1" ,
90
+ content :"The first step" ,
91
+ setup :{ commits :[ "abcdefa" ] } ,
92
+ } ,
93
+ {
94
+ id :"1.2" ,
95
+ content :"The second step" ,
96
+ setup :{ commits :[ "abcdefb" ] } ,
97
+ } ,
98
+ ] ,
99
+ } ,
100
+ ] ,
101
+ } ;
102
+
103
+ const valid = validateTutorial ( json ) ;
104
+ expect ( valid ) . toBe ( true ) ;
105
+ } ) ;
106
+ it ( "shouldn't allow a step with no setup but a solution" , ( ) => {
107
+ const json = {
108
+ ...validJson ,
109
+ levels :[
110
+ {
111
+ id :"1" ,
112
+ title :"Level 1" ,
113
+ summary :"summary" ,
114
+ content :"content" ,
115
+ steps :[
116
+ {
117
+ id :"1.1" ,
118
+ content :"The first step" ,
119
+ solution :{ commits :[ "abcdefa" ] } ,
120
+ } ,
121
+ {
122
+ id :"1.2" ,
123
+ content :"The second step" ,
124
+ solution :{ commits :[ "abcdefb" ] } ,
125
+ } ,
126
+ ] ,
127
+ } ,
128
+ ] ,
129
+ } ;
130
+
131
+ const valid = validateTutorial ( json ) ;
132
+ expect ( valid ) . toBe ( false ) ;
133
+ } ) ;
77
134
} ) ;