@@ -11,6 +11,7 @@ enum TestFieldName: String {
1111
1212final class FormHookTests : QuickSpec {
1313 override func spec( ) {
14+ registerSpecs ( )
1415 unregisterSpecs ( )
1516 resetSingleFieldSpecs ( )
1617 resetFormSpecs ( )
@@ -20,6 +21,68 @@ final class FormHookTests: QuickSpec {
2021 triggerSpecs ( )
2122 }
2223
24+ func registerSpecs( ) {
25+ describe ( " Form Control " ) {
26+ var formControl : FormControl < TestFieldName > !
27+
28+ beforeEach {
29+ var formState : FormState < TestFieldName > = . init( )
30+ let options = FormOption < TestFieldName > (
31+ mode: . onSubmit,
32+ reValidateMode: . onChange,
33+ resolver: nil ,
34+ context: nil ,
35+ shouldUnregister: true ,
36+ delayError: true
37+ )
38+ formControl = . init( options: options, formState: . init(
39+ get: { formState } ,
40+ set: { formState = $0 }
41+ ) )
42+ }
43+
44+ context ( " registers a field \" a \" with a default value " ) {
45+ var aValidator : MockValidator < String , Bool > !
46+ let testDefaultValue = " %^$# "
47+ let testDefaultValue2 = " %^$#@ "
48+ var aBinder : FieldRegistration < String > !
49+
50+ beforeEach {
51+ aValidator = MockValidator < String , Bool > ( result: true )
52+ aBinder = formControl. register ( name: . a, options: . init( rules: aValidator!, defaultValue: testDefaultValue) )
53+ }
54+
55+ context ( " value for key \" a \" changes " ) {
56+ beforeEach {
57+ aBinder. wrappedValue = " a "
58+ await formControl. syncFormState ( )
59+ }
60+
61+ it ( " key \" a \" and formState are dirty " ) {
62+ let fieldState = await formControl. getFieldState ( name: . a)
63+ expect ( fieldState. isDirty) == true
64+
65+ let formState = await formControl. formState
66+ expect ( formState. isDirty) == true
67+ }
68+ }
69+
70+ context ( " registers field \" a \" with other options " ) {
71+ beforeEach {
72+ aBinder = formControl. register ( name: . a, options: . init( rules: aValidator!, defaultValue: testDefaultValue2) )
73+ await formControl. syncFormState ( )
74+ }
75+
76+ it ( " field \" a \" changes its value " ) {
77+ let formState = await formControl. formState
78+ expect ( areEqual ( first: formState. defaultValues [ . a] , second: testDefaultValue2) ) == true
79+ expect ( areEqual ( first: formState. formValues [ . a] , second: testDefaultValue2) ) == true
80+ }
81+ }
82+ }
83+ }
84+ }
85+
2386 func unregisterSpecs( ) {
2487 describe ( " Form Control registers a field \" a \" with a default value " ) {
2588 var formControl : FormControl < TestFieldName > !
@@ -195,7 +258,7 @@ final class FormHookTests: QuickSpec {
195258 var aValidator : MockValidator < String , Bool > !
196259 let testDefaultValue = " %^$# "
197260 let testDefaultValue2 = " %^$#*( "
198- var aBinder : Binding < String > !
261+ var aBinder : FieldRegistration < String > !
199262
200263 beforeEach {
201264 var formState : FormState < TestFieldName > = . init( )
@@ -330,8 +393,8 @@ final class FormHookTests: QuickSpec {
330393 let aDefaultValue2 = " %^$#) "
331394 let bDefaultValue2 = " %^$#*() "
332395
333- var aBinder : Binding < String > !
334- var bBinder : Binding < String > !
396+ var aBinder : FieldRegistration < String > !
397+ var bBinder : FieldRegistration < String > !
335398
336399 beforeEach {
337400 var formState : FormState < TestFieldName > = . init( )
0 commit comments