@@ -93,9 +93,9 @@ describe('RulesComponent', () => {
93
93
// Act
94
94
await page . clickOnCreateNewRule ( ) ;
95
95
fixture . detectChanges ( ) ;
96
- await page . setCreateRuleName ( 'New rule' ) ;
97
- await page . setCreateRuleCategory ( [ 'Cat1' , 'ChildCat1' ] ) ;
98
- await page . setCreateRuleScript ( 'return fileName === "child_cat_1.txt"' ) ;
96
+ await page . setRuleName ( 'New rule' ) ;
97
+ await page . setRuleCategory ( [ 'Cat1' , 'ChildCat1' ] ) ;
98
+ await page . setRuleScript ( 'return fileName === "child_cat_1.txt"' ) ;
99
99
await page . clickOnCreate ( ) ;
100
100
101
101
// Assert
@@ -137,6 +137,48 @@ describe('RulesComponent', () => {
137
137
expect ( Page . getRuleNames ( ) )
138
138
. toEqual ( [ ] ) ;
139
139
} ) )
140
+
141
+ it ( 'should update an existing rule' , fakeAsync ( async ( ) => {
142
+ // Arrange
143
+ let ruleService = mockRuleService ( ) ;
144
+
145
+ let rule : Rule = {
146
+ id : 1 ,
147
+ name : 'Rule1' ,
148
+ category : [ 'Cat1' , 'ChildCat1' ] ,
149
+ script : 'return fileName === "child_cat_1.txt"'
150
+ } ;
151
+ when ( ( ) => ruleService . findAll ( ) ) . thenResolve ( [ rule ] ) ;
152
+
153
+ // A refresh is expected after update
154
+ let editedRule : Rule = {
155
+ id : 1 ,
156
+ name : 'Rule1 edited' ,
157
+ category : [ 'Cat1' , 'ChildCat1' ] ,
158
+ script : 'return fileName === "child_cat_1.txt"'
159
+ } ;
160
+ when ( ( ) => ruleService . findAll ( ) ) . thenResolve ( [ editedRule ] ) ;
161
+
162
+ when ( ( ) => ruleService . update ( editedRule ) ) . thenResolve ( undefined ) ;
163
+
164
+ let fixture = MockRender ( RulesComponent ) ;
165
+ tick ( ) ;
166
+
167
+ let page = new Page ( fixture ) ;
168
+
169
+ // Act
170
+ await page . clickOnEditFirstRule ( ) ;
171
+ fixture . detectChanges ( ) ;
172
+ await page . setRuleName ( 'Rule1 edited' ) ;
173
+ await page . clickOnUpdate ( ) ;
174
+
175
+ // Assert
176
+ // No failure in mock setup
177
+ tick ( ) ;
178
+ fixture . detectChanges ( ) ;
179
+ expect ( Page . getRuleNames ( ) )
180
+ . toEqual ( [ 'Rule1 edited' ] ) ;
181
+ } ) )
140
182
} ) ;
141
183
142
184
@@ -195,12 +237,17 @@ class Page {
195
237
await button . click ( ) ;
196
238
}
197
239
198
- async setCreateRuleName ( name : string ) {
240
+ async clickOnEditFirstRule ( ) {
241
+ let button = await this . loader . getHarness ( MatButtonHarness . with ( { text : 'Edit' } ) ) ;
242
+ await button . click ( ) ;
243
+ }
244
+
245
+ async setRuleName ( name : string ) {
199
246
let input = await this . getInputByFloatingLabel ( 'Name' ) ;
200
247
await input . setValue ( name ) ;
201
248
}
202
249
203
- async setCreateRuleCategory ( category : string [ ] ) {
250
+ async setRuleCategory ( category : string [ ] ) {
204
251
// let inputHarness = await this.loader.getHarness(MatInputHarness.with({placeholder: 'Select category...'}));
205
252
let chipGridHarness = await this . loader . getHarness ( MatChipGridHarness ) ;
206
253
let inputHarness = await chipGridHarness . getInput ( )
@@ -213,7 +260,7 @@ class Page {
213
260
}
214
261
}
215
262
216
- async setCreateRuleScript ( script : string ) {
263
+ async setRuleScript ( script : string ) {
217
264
let inputHarness = await this . getInputByFloatingLabel ( 'Script' ) ;
218
265
await inputHarness . setValue ( script ) ;
219
266
}
@@ -223,6 +270,11 @@ class Page {
223
270
await button . click ( ) ;
224
271
}
225
272
273
+ async clickOnUpdate ( ) {
274
+ let button = await this . loader . getHarness ( MatButtonHarness . with ( { text : 'Update' } ) ) ;
275
+ await button . click ( ) ;
276
+ }
277
+
226
278
private async getInputByFloatingLabel ( floatingLabelText : string | RegExp ) {
227
279
let formFieldHarness = await this . loader . getHarness ( MatFormFieldHarness . with ( { floatingLabelText : floatingLabelText } ) ) ;
228
280
let control = await formFieldHarness . getControl ( ) ;
0 commit comments