@@ -2091,6 +2091,36 @@ describe('managerApi', () => {
2091
2091
expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . error ) . toEqual ( undefined ) ;
2092
2092
} ) ;
2093
2093
2094
+ it ( 'warning should rewrite error - sync' , ( ) => {
2095
+ const managerApi = createManagerApi ( { } ) ;
2096
+ managerApi ( ) . registerField ( {
2097
+ name : 'field' ,
2098
+ initialValue : 'warning' ,
2099
+ validate : ( value ) => ( value === 'warning' ? { type : 'warning' , error : someError } : 'error' ) ,
2100
+ render,
2101
+ internalId : 1
2102
+ } ) ;
2103
+
2104
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . warning ) . toEqual ( someError ) ;
2105
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . error ) . toEqual ( undefined ) ;
2106
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . valid ) . toEqual ( true ) ;
2107
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . invalid ) . toEqual ( false ) ;
2108
+
2109
+ managerApi ( ) . change ( 'field' , 'error' ) ;
2110
+
2111
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . warning ) . toEqual ( undefined ) ;
2112
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . error ) . toEqual ( 'error' ) ;
2113
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . valid ) . toEqual ( false ) ;
2114
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . invalid ) . toEqual ( true ) ;
2115
+
2116
+ managerApi ( ) . change ( 'field' , 'warning' ) ;
2117
+
2118
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . warning ) . toEqual ( someError ) ;
2119
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . error ) . toEqual ( undefined ) ;
2120
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . valid ) . toEqual ( true ) ;
2121
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . invalid ) . toEqual ( false ) ;
2122
+ } ) ;
2123
+
2094
2124
it ( 'should save type: warning as warning - async' , ( done ) => {
2095
2125
expect . assertions ( 2 ) ;
2096
2126
@@ -2105,6 +2135,52 @@ describe('managerApi', () => {
2105
2135
done ( ) ;
2106
2136
} ) ;
2107
2137
} ) ;
2138
+
2139
+ it ( 'warning should rewrite error - async' , ( done ) => {
2140
+ expect . assertions ( 18 ) ;
2141
+
2142
+ const asyncValidate = jest
2143
+ . fn ( )
2144
+ . mockImplementation ( ( value ) => Promise . reject ( value === 'warning' ? { type : 'warning' , error : someError } : 'error' ) ) ;
2145
+
2146
+ const managerApi = createManagerApi ( { } ) ;
2147
+ managerApi ( ) . registerField ( { name : 'field' , initialValue : 'warning' , validate : asyncValidate , render, internalId : 1 } ) ;
2148
+
2149
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . validating ) . toEqual ( true ) ;
2150
+
2151
+ setImmediate ( ( ) => {
2152
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . warning ) . toEqual ( someError ) ;
2153
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . error ) . toEqual ( undefined ) ;
2154
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . valid ) . toEqual ( true ) ;
2155
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . invalid ) . toEqual ( false ) ;
2156
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . validating ) . toEqual ( false ) ;
2157
+
2158
+ managerApi ( ) . change ( 'field' , 'error' ) ;
2159
+
2160
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . validating ) . toEqual ( true ) ;
2161
+
2162
+ setImmediate ( ( ) => {
2163
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . warning ) . toEqual ( undefined ) ;
2164
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . error ) . toEqual ( 'error' ) ;
2165
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . valid ) . toEqual ( false ) ;
2166
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . invalid ) . toEqual ( true ) ;
2167
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . validating ) . toEqual ( false ) ;
2168
+
2169
+ managerApi ( ) . change ( 'field' , 'warning' ) ;
2170
+
2171
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . validating ) . toEqual ( true ) ;
2172
+
2173
+ setImmediate ( ( ) => {
2174
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . warning ) . toEqual ( someError ) ;
2175
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . error ) . toEqual ( undefined ) ;
2176
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . valid ) . toEqual ( true ) ;
2177
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . invalid ) . toEqual ( false ) ;
2178
+ expect ( managerApi ( ) . getFieldState ( 'field' ) . meta . validating ) . toEqual ( false ) ;
2179
+ done ( ) ;
2180
+ } ) ;
2181
+ } ) ;
2182
+ } ) ;
2183
+ } ) ;
2108
2184
} ) ;
2109
2185
2110
2186
describe ( 'invalid submit' , ( ) => {
0 commit comments