1
+ import { expect } from "chai" ;
2
+ import { createVueField } from "../util" ;
3
+
4
+ import Vue from "vue" ;
5
+ import FieldRadios from "src/fields/fieldRadios.vue" ;
6
+
7
+ Vue . component ( "FieldRadios" , FieldRadios ) ;
8
+
9
+ let el , vm , field ;
10
+
11
+ function createField ( test , schema = { } , model = null , disabled = false , options ) {
12
+ [ el , vm , field ] = createVueField ( test , "fieldRadios" , schema , model , disabled , options ) ;
13
+ }
14
+
15
+ describe ( "FieldRadios.vue" , function ( ) {
16
+
17
+ describe ( "check template with static string array" , ( ) => {
18
+ let schema = {
19
+ type : "radios" ,
20
+ label : "radios" ,
21
+ model : "skills" ,
22
+ values : [
23
+ "HTML5" ,
24
+ "Javascript" ,
25
+ "CSS3" ,
26
+ "CoffeeScript" ,
27
+ "AngularJS" ,
28
+ "ReactJS" ,
29
+ "VueJS"
30
+ ]
31
+ } ;
32
+ let model = { skills : "Javascript" } ;
33
+ let radioList ;
34
+ let radios ;
35
+
36
+ function isChecked ( idx ) {
37
+ return ( radios [ idx ] . checked ) ;
38
+ }
39
+
40
+ before ( ( ) => {
41
+ createField ( this , schema , model , false ) ;
42
+ radioList = el . querySelector ( ".radio-list" ) ;
43
+ radios = radioList . querySelectorAll ( "input[type=radio]" ) ;
44
+ } ) ;
45
+
46
+ it ( "should contain a checkbox element" , ( ) => {
47
+ expect ( field ) . to . be . exist ;
48
+ expect ( field . $el ) . to . be . exist ;
49
+
50
+ expect ( radioList ) . to . be . defined ;
51
+ } ) ;
52
+
53
+ it ( "should contain 7 items" , ( ) => {
54
+ expect ( radios . length ) . to . be . equal ( 7 ) ;
55
+ } ) ;
56
+
57
+ it ( "should checked the values" , ( ) => {
58
+ expect ( isChecked ( 0 ) ) . to . be . false ;
59
+ expect ( isChecked ( 1 ) ) . to . be . true ;
60
+ expect ( isChecked ( 2 ) ) . to . be . false ;
61
+ expect ( isChecked ( 3 ) ) . to . be . false ;
62
+ expect ( isChecked ( 4 ) ) . to . be . false ;
63
+ expect ( isChecked ( 5 ) ) . to . be . false ;
64
+ expect ( isChecked ( 6 ) ) . to . be . false ;
65
+ } ) ;
66
+
67
+ it ( "radioList value should be the model value after changed" , ( done ) => {
68
+ model . skills = "ReactJS" ;
69
+ vm . $nextTick ( ( ) => {
70
+ expect ( isChecked ( 0 ) ) . to . be . false ;
71
+ expect ( isChecked ( 1 ) ) . to . be . false ;
72
+ expect ( isChecked ( 2 ) ) . to . be . false ;
73
+ expect ( isChecked ( 3 ) ) . to . be . false ;
74
+ expect ( isChecked ( 4 ) ) . to . be . false ;
75
+ expect ( isChecked ( 5 ) ) . to . be . true ;
76
+ expect ( isChecked ( 6 ) ) . to . be . false ;
77
+ done ( ) ;
78
+ } ) ;
79
+
80
+ } ) ;
81
+
82
+ it ( "model value should be the radioList value if changed" , ( done ) => {
83
+ radios [ 0 ] . click ( ) ;
84
+
85
+ vm . $nextTick ( ( ) => {
86
+ expect ( model . skills ) . to . be . equal ( "HTML5" ) ;
87
+ done ( ) ;
88
+ } ) ;
89
+
90
+ } ) ;
91
+
92
+ } ) ;
93
+
94
+ describe ( "check template with object array" , ( ) => {
95
+ let schema = {
96
+ type : "radios" ,
97
+ label : "radios" ,
98
+ model : "skills" ,
99
+ values : [
100
+ { name : "HTML5" , value :"HTML5-123" } ,
101
+ { name : "Javascript" , value :{ id :"Javascript-123" , deep :true } } ,
102
+ { name : "CSS3" , value :"CSS3-123" } ,
103
+ { name : "CoffeeScript" , value :"CoffeeScript-123" } ,
104
+ { name : "AngularJS" , value :"AngularJS-123" } ,
105
+ { name : "ReactJS" , value :"ReactJS-123" } ,
106
+ { name : "VueJS" , value :"VueJS-123" }
107
+ ] ,
108
+ radiosOptions : {
109
+ value :"value" ,
110
+ name :"name"
111
+ }
112
+ } ;
113
+ let model = { skills : "CSS3-123" } ;
114
+ let radioList ;
115
+ let radios ;
116
+
117
+ function isChecked ( idx ) {
118
+ return ( radios [ idx ] . checked ) ;
119
+ }
120
+
121
+ before ( ( ) => {
122
+ createField ( this , schema , model , false ) ;
123
+ radioList = el . querySelector ( ".radio-list" ) ;
124
+ radios = radioList . querySelectorAll ( "input[type=radio]" ) ;
125
+ } ) ;
126
+
127
+ it ( "should contain a checkbox element" , ( ) => {
128
+ expect ( field ) . to . be . exist ;
129
+ expect ( field . $el ) . to . be . exist ;
130
+
131
+ expect ( radioList ) . to . be . defined ;
132
+ } ) ;
133
+
134
+ it ( "should contain 7 items" , ( ) => {
135
+ expect ( radios . length ) . to . be . equal ( 7 ) ;
136
+ } ) ;
137
+
138
+ it ( "should checked the values" , ( ) => {
139
+ expect ( isChecked ( 0 ) ) . to . be . false ;
140
+ expect ( isChecked ( 1 ) ) . to . be . false ;
141
+ expect ( isChecked ( 2 ) ) . to . be . true ;
142
+ expect ( isChecked ( 3 ) ) . to . be . false ;
143
+ expect ( isChecked ( 4 ) ) . to . be . false ;
144
+ expect ( isChecked ( 5 ) ) . to . be . false ;
145
+ expect ( isChecked ( 6 ) ) . to . be . false ;
146
+ } ) ;
147
+
148
+ it ( "radioList value should be the model value after changed" , ( done ) => {
149
+ model . skills = "ReactJS-123" ;
150
+ vm . $nextTick ( ( ) => {
151
+ expect ( isChecked ( 0 ) ) . to . be . false ;
152
+ expect ( isChecked ( 1 ) ) . to . be . false ;
153
+ expect ( isChecked ( 2 ) ) . to . be . false ;
154
+ expect ( isChecked ( 3 ) ) . to . be . false ;
155
+ expect ( isChecked ( 4 ) ) . to . be . false ;
156
+ expect ( isChecked ( 5 ) ) . to . be . true ;
157
+ expect ( isChecked ( 6 ) ) . to . be . false ;
158
+ done ( ) ;
159
+ } ) ;
160
+ } ) ;
161
+
162
+ it ( "model value should be the radioList value if changed" , ( done ) => {
163
+ radios [ 0 ] . click ( ) ;
164
+
165
+ vm . $nextTick ( ( ) => {
166
+ expect ( model . skills ) . to . be . equal ( "HTML5-123" ) ;
167
+ done ( ) ;
168
+ } ) ;
169
+
170
+ } ) ;
171
+
172
+ } ) ;
173
+
174
+ } ) ;
0 commit comments