@@ -1219,6 +1219,47 @@ describe('managerApi', () => {
1219
1219
} ) ;
1220
1220
} ) ;
1221
1221
} ) ;
1222
+
1223
+ it ( 'should reset error state when revalidated' , ( ) => {
1224
+ jest . useFakeTimers ( ) ;
1225
+ const render = jest . fn ( ) ;
1226
+ const managerApi = createManagerApi ( { validate : asyncValidate } ) ;
1227
+ const { registerField, change } = managerApi ( ) ;
1228
+
1229
+ registerField ( { name : 'foo' , render } ) ;
1230
+
1231
+ change ( 'foo' , 'foo' ) ;
1232
+
1233
+ jest . advanceTimersByTime ( 10 ) ;
1234
+ setImmediate ( ( ) => {
1235
+ expect ( managerApi ( ) . getState ( ) . errors ) . toEqual ( {
1236
+ foo : 'error'
1237
+ } ) ;
1238
+ expect ( managerApi ( ) . getState ( ) . valid ) . toEqual ( false ) ;
1239
+ expect ( managerApi ( ) . getState ( ) . invalid ) . toEqual ( true ) ;
1240
+ expect ( managerApi ( ) . getState ( ) . validating ) . toEqual ( false ) ;
1241
+ expect ( managerApi ( ) . hasValidationErrors ) . toEqual ( true ) ;
1242
+
1243
+ change ( 'foo' , 'foo' ) ;
1244
+
1245
+ expect ( managerApi ( ) . getState ( ) . errors ) . toEqual ( { } ) ;
1246
+ expect ( managerApi ( ) . getState ( ) . valid ) . toEqual ( true ) ;
1247
+ expect ( managerApi ( ) . getState ( ) . invalid ) . toEqual ( false ) ;
1248
+ expect ( managerApi ( ) . getState ( ) . validating ) . toEqual ( true ) ;
1249
+ expect ( managerApi ( ) . hasValidationErrors ) . toEqual ( false ) ;
1250
+
1251
+ jest . advanceTimersByTime ( 10 ) ;
1252
+ setImmediate ( ( ) => {
1253
+ expect ( managerApi ( ) . getState ( ) . errors ) . toEqual ( {
1254
+ foo : 'error'
1255
+ } ) ;
1256
+ expect ( managerApi ( ) . getState ( ) . valid ) . toEqual ( false ) ;
1257
+ expect ( managerApi ( ) . getState ( ) . invalid ) . toEqual ( true ) ;
1258
+ expect ( managerApi ( ) . getState ( ) . validating ) . toEqual ( false ) ;
1259
+ expect ( managerApi ( ) . hasValidationErrors ) . toEqual ( true ) ;
1260
+ } ) ;
1261
+ } ) ;
1262
+ } ) ;
1222
1263
} ) ;
1223
1264
1224
1265
describe ( 'Combine form and field level validation' , ( ) => {
@@ -1532,6 +1573,37 @@ describe('managerApi', () => {
1532
1573
} ) ;
1533
1574
} ) ;
1534
1575
} ) ;
1576
+
1577
+ it ( 'should reset field.error when validating' , async ( done ) => {
1578
+ expect . assertions ( 8 ) ;
1579
+ jest . useFakeTimers ( ) ;
1580
+ const render = jest . fn ( ) ;
1581
+
1582
+ const managerApi = createManagerApi ( { } ) ;
1583
+ managerApi ( ) . registerField ( { name : 'field' , initialValue : 'one' , validate : asyncValidate1 , render, internalId : 1 } ) ;
1584
+
1585
+ jest . runAllTimers ( ) ;
1586
+
1587
+ setImmediate ( ( ) => {
1588
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . error ) . toEqual ( 'error-one' ) ;
1589
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . valid ) . toEqual ( false ) ;
1590
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . invalid ) . toEqual ( true ) ;
1591
+
1592
+ managerApi ( ) . change ( 'field' , 'ok' ) ;
1593
+
1594
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . error ) . toEqual ( undefined ) ;
1595
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . valid ) . toEqual ( true ) ;
1596
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . invalid ) . toEqual ( false ) ;
1597
+
1598
+ jest . runAllTimers ( ) ;
1599
+
1600
+ setImmediate ( ( ) => {
1601
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . validating ) . toEqual ( false ) ;
1602
+ expect ( managerApi ( ) . getState ( ) . validating ) . toEqual ( false ) ;
1603
+ done ( ) ;
1604
+ } ) ;
1605
+ } ) ;
1606
+ } ) ;
1535
1607
} ) ;
1536
1608
1537
1609
describe ( 'initialize' , ( ) => {
0 commit comments