@@ -3,11 +3,14 @@ import { expect } from "chai";
33import Vue from "vue" ;
44import VueFormGenerator from "src/index" ;
55
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 ;
99
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 ( {
1114 el : el ,
1215 data : {
1316 schema,
@@ -16,35 +19,146 @@ function createFormGenerator(schema, model, options, done) {
1619 }
1720 } ) ;
1821
19- vm . $nextTick ( ( ) => {
20- console . log ( el ) ;
21- done ( el , vm ) ;
22- } ) ;
22+ console . log ( el ) ;
23+
24+ return [ el , vm ] ;
2325}
2426
2527describe ( "VueFormGenerator.vue" , ( ) => {
2628
27- let el , vm ;
29+ describe ( "with empty schema" , ( ) => {
30+ let schema = { } ;
31+ let model = null ;
2832
29- Vue . component ( "VueFormGenerator" , VueFormGenerator . component ) ;
33+ beforeEach ( ( ) => {
34+ createFormGenerator ( schema ) ;
35+ } ) ;
3036
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 ) ;
3643 } ) ;
44+
3745 } ) ;
3846
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+ } ;
4265
43- let table = el . getElementsByTagName ( "table" ) [ 0 ] ;
66+ before ( ( ) => {
67+ createFormGenerator ( schema ) ;
68+ tr = el . getElementsByTagName ( "tr" ) [ 0 ] ;
69+ } ) ;
4470
45- } ) ;
71+ it ( "should be empty classList" , ( ) => {
72+ expect ( tr . classList . length ) . to . be . equal ( 0 ) ;
73+ } ) ;
4674
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;
47135
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+ });
48161
162+ }); */
49163
50164} ) ;
0 commit comments