@@ -3,11 +3,14 @@ import { expect } from "chai";
3
3
import Vue from "vue" ;
4
4
import VueFormGenerator from "src/index" ;
5
5
6
- function createFormGenerator ( schema , model , options , done ) {
7
- let el = document . createElement ( "div" ) ;
8
- el . innerHTML = `<vue-form-generator :schema="schema" :model="model" :options="options"></vue-form-generator>` ;
6
+ Vue . use ( VueFormGenerator ) ;
7
+
8
+ let el , vm ;
9
9
10
- let vm = new Vue ( {
10
+ function createFormGenerator ( schema = { } , model = null , options = { } ) {
11
+ el = document . createElement ( "div" ) ;
12
+ el . innerHTML = `<vue-form-generator :schema="schema" :model="model" :options="options"></vue-form-generator>` ;
13
+ vm = new Vue ( {
11
14
el : el ,
12
15
data : {
13
16
schema,
@@ -16,35 +19,146 @@ function createFormGenerator(schema, model, options, done) {
16
19
}
17
20
} ) ;
18
21
19
- vm . $nextTick ( ( ) => {
20
- console . log ( el ) ;
21
- done ( el , vm ) ;
22
- } ) ;
22
+ console . log ( el ) ;
23
+
24
+ return [ el , vm ] ;
23
25
}
24
26
25
27
describe ( "VueFormGenerator.vue" , ( ) => {
26
28
27
- let el , vm ;
29
+ describe ( "with empty schema" , ( ) => {
30
+ let schema = { } ;
31
+ let model = null ;
28
32
29
- Vue . component ( "VueFormGenerator" , VueFormGenerator . component ) ;
33
+ beforeEach ( ( ) => {
34
+ createFormGenerator ( schema ) ;
35
+ } ) ;
30
36
31
- beforeEach ( ( done ) => {
32
- createFormGenerator ( { } , null , { } , ( _el , _vm ) => {
33
- el = _el ;
34
- vm = _vm ;
35
- done ( ) ;
37
+ it ( "should be create HTML table" , ( ) => {
38
+ expect ( vm . $el ) . to . be . exist ;
39
+ expect ( el . getElementsByTagName ( "table" ) ) . to . be . length ( 1 ) ;
40
+
41
+ let table = el . getElementsByTagName ( "table" ) [ 0 ] ;
42
+ expect ( table . getElementsByTagName ( "tbody" ) ) . to . be . length ( 1 ) ;
36
43
} ) ;
44
+
37
45
} ) ;
38
46
39
- it ( "should be create HTML divs" , ( ) => {
40
- expect ( vm . $el ) . to . be . exist ;
41
- expect ( el . getElementsByTagName ( "table" ) ) . to . be . length ( 1 ) ;
47
+ describe ( "check form row classes" , ( ) => {
48
+ let tr ;
49
+ let schema = {
50
+ fields : [
51
+ {
52
+ type : "text" ,
53
+ label : "Name" ,
54
+ model : "name" ,
55
+ readonly : false ,
56
+ featured : false ,
57
+ required : false ,
58
+ disabled : false ,
59
+ hint : null ,
60
+ helpText : null ,
61
+ placeholder : "User's name"
62
+ }
63
+ ]
64
+ } ;
42
65
43
- let table = el . getElementsByTagName ( "table" ) [ 0 ] ;
66
+ before ( ( ) => {
67
+ createFormGenerator ( schema ) ;
68
+ tr = el . getElementsByTagName ( "tr" ) [ 0 ] ;
69
+ } ) ;
44
70
45
- } ) ;
71
+ it ( "should be empty classList" , ( ) => {
72
+ expect ( tr . classList . length ) . to . be . equal ( 0 ) ;
73
+ } ) ;
46
74
75
+ it ( "should be featured class" , ( done ) => {
76
+ vm . schema . fields [ 0 ] . featured = true ;
77
+ vm . $nextTick ( ( ) => {
78
+ expect ( tr . classList . contains ( "featured" ) ) . to . be . true ;
79
+ done ( ) ;
80
+ } )
81
+ } ) ;
82
+
83
+ it ( "should be readonly class" , ( done ) => {
84
+ vm . schema . fields [ 0 ] . readonly = true ;
85
+ vm . $nextTick ( ( ) => {
86
+ expect ( tr . classList . contains ( "readonly" ) ) . to . be . true ;
87
+ done ( ) ;
88
+ } )
89
+ } ) ;
90
+
91
+ it ( "should be disabled class" , ( done ) => {
92
+ vm . schema . fields [ 0 ] . disabled = true ;
93
+ vm . $nextTick ( ( ) => {
94
+ expect ( tr . classList . contains ( "disabled" ) ) . to . be . true ;
95
+ done ( ) ;
96
+ } )
97
+ } ) ;
98
+
99
+ it ( "should be required class" , ( done ) => {
100
+ vm . schema . fields [ 0 ] . required = true ;
101
+ vm . $nextTick ( ( ) => {
102
+ expect ( tr . classList . contains ( "required" ) ) . to . be . true ;
103
+ done ( ) ;
104
+ } )
105
+ } ) ;
106
+
107
+ it ( "should be error class" , ( done ) => {
108
+ vm . $set ( "schema.fields[0].errors" , [ "!!!" ] ) ;
109
+ vm . $nextTick ( ( ) => {
110
+ expect ( tr . classList . contains ( "error" ) ) . to . be . true ;
111
+ done ( ) ;
112
+ } )
113
+ } ) ;
114
+
115
+ } ) ;
116
+ /*
117
+ describe("check form row classes", () => {
118
+ let schema = {
119
+ fields: [
120
+ {
121
+ type: "text",
122
+ label: "Name",
123
+ model: "name",
124
+ readonly: false,
125
+ featured: false,
126
+ required: false,
127
+ disabled: false,
128
+ hint: null,
129
+ helpText: null,
130
+ placeholder: "User's name"
131
+ }
132
+ ]
133
+ };
134
+ let model = null;
47
135
136
+ beforeEach((done) => {
137
+ createFormGenerator(schema, model, {}, (_el, _vm) => {
138
+ el = _el;
139
+ vm = _vm;
140
+ done();
141
+ });
142
+ });
143
+
144
+ it("should be create a row and an input text field with empty value", () => {
145
+ // check row
146
+ let tr = el.getElementsByTagName("tr")[0];
147
+ expect(tr).to.be.exist;
148
+ expect(tr.classList.length).to.be.equal(0);
149
+
150
+ let tdCaption = tr.getElementsByTagName("td")[0];
151
+ expect(tdCaption).to.be.exist;
152
+ expect(tdCaption.textContent.trim()).to.be.equal("Name"); // TODO why need to trim?
153
+
154
+ let tdField = tr.getElementsByTagName("td")[1];
155
+ expect(tdField).to.be.exist;
156
+
157
+ let input = tdField.getElementsByTagName("input")[0];
158
+ expect(input).to.be.exist;
159
+ expect(input.type).to.be.equal("text");
160
+ });
48
161
162
+ }); */
49
163
50
164
} ) ;
0 commit comments