Skip to content

Commit

Permalink
✅ test: Add field test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
icebob committed May 9, 2016
1 parent d0be50b commit adb4f88
Show file tree
Hide file tree
Showing 13 changed files with 863 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/fields/fieldCheckbox.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<template lang="jade">
input(type="checkbox", :disabled="disabled", v-model="value")
input(type="checkbox", v-model="value", :readonly="schema.readonly", :disabled="disabled")
</template>

<script>
Expand Down
2 changes: 1 addition & 1 deletion src/fields/fieldEmail.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<template lang="jade">
input.form-control(type="email", v-model="value", :disabled="disabled", :placeholder="schema.placeholder")
input.form-control(type="email", v-model="value", :readonly="schema.readonly", :disabled="disabled", :placeholder="schema.placeholder")
</template>

<script>
Expand Down
2 changes: 1 addition & 1 deletion src/fields/fieldNumber.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<template lang="jade">
input.form-control(type="number", v-model="value", number, :min="schema.min", :max="schema.max", :disabled="disabled", :placeholder="schema.placeholder")
input.form-control(type="number", v-model="value", number, :min="schema.min", :max="schema.max", :readonly="schema.readonly", :disabled="disabled", :placeholder="schema.placeholder")
</template>

<script>
Expand Down
2 changes: 1 addition & 1 deletion src/fields/fieldTextArea.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<template lang="jade">
textarea.form-control(v-model="value", :rows="schema.rows || 2", :placeholder="schema.placeholder", :disabled="disabled", :maxlength="schema.max")
textarea.form-control(v-model="value", :rows="schema.rows || 2", :readonly="schema.readonly", :placeholder="schema.placeholder", :disabled="disabled", :maxlength="schema.max")
</template>

<script>
Expand Down
2 changes: 1 addition & 1 deletion test/unit/specs/fields/abstractField.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function createField(schema = {}, model = null, disabled = false, options) {
return [el, vm];
}

describe("abstractField", () => {
describe("abstractField.vue", () => {

describe("check static value", () => {
let schema = {
Expand Down
100 changes: 100 additions & 0 deletions test/unit/specs/fields/fieldCheckbox.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import { expect } from "chai";
import { trigger } from "../util";

import Vue from "vue";
import FieldCheckbox from "src/fields/fieldCheckbox.vue";

Vue.component("FieldCheckbox", FieldCheckbox);

let el, vm, field;

function createField(schema = {}, model = null, disabled = false, options) {
el = document.createElement("div");
el.innerHTML = `<field-checkbox :schema.sync="schema" :model.sync="model" :disabled="disabled" v-ref:field></field-checkbox>`;
vm = new Vue({
el: el,
data: {
schema,
model,
disabled,
options
}
});

field = vm.$refs.field;
//console.log(el);
}

describe("FieldCheckbox.vue", () => {

describe("check template", () => {
let schema = {
type: "checkbox",
label: "Status",
model: "status",
readonly: false
};
let model = { status: true };
let input;

before( () => {
createField(schema, model, false);
input = el.getElementsByTagName("input")[0];
});

it("should contain az input text element", () => {
expect(field).to.be.exist;
expect(field.$el).to.be.exist;

expect(input).to.be.defined;
expect(input.type).to.be.equal("checkbox");
expect(input.readOnly).to.be.false;
expect(input.disabled).to.be.false;
});

it("should contain the value", (done) => {
vm.$nextTick( () => {
expect(input.checked).to.be.true;
done();
});
});

it("should set readOnly", (done) => {
schema.readonly = true;
vm.$nextTick( () => {
expect(input.readOnly).to.be.true;
done();
});
});

it("should set disabled", (done) => {
field.disabled = true;
vm.$nextTick( () => {
expect(input.disabled).to.be.true;
done();
});
});

it("input value should be the model value after changed", (done) => {
model.status = false;
vm.$nextTick( () => {
expect(input.checked).to.be.false;
done();
});

});

it("model value should be the input value if changed", (done) => {
input.checked = true;
trigger(input, "change");

vm.$nextTick( () => {
expect(model.status).to.be.true;
done();
});

});

});

});
103 changes: 103 additions & 0 deletions test/unit/specs/fields/fieldEmail.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import { expect } from "chai";
import { trigger } from "../util";

import Vue from "vue";
import FieldEmail from "src/fields/fieldEmail.vue";

Vue.component("FieldEmail", FieldEmail);

let el, vm, field;

function createField(schema = {}, model = null, disabled = false, options) {
el = document.createElement("div");
el.innerHTML = `<field-email :schema.sync="schema" :model.sync="model" :disabled="disabled" v-ref:field></field-email>`;
vm = new Vue({
el: el,
data: {
schema,
model,
disabled,
options
}
});

field = vm.$refs.field;
//console.log(el);
}

describe("fieldEmail.vue", () => {

describe("check template", () => {
let schema = {
type: "text",
label: "E-mail",
model: "email",
readonly: false,
placeholder: "Field placeholder"
};
let model = { email: "[email protected]" };
let input;

before( () => {
createField(schema, model, false);
input = el.getElementsByTagName("input")[0];
});

it("should contain az input email element", () => {
expect(field).to.be.exist;
expect(field.$el).to.be.exist;

expect(input).to.be.defined;
expect(input.type).to.be.equal("email");
expect(input.classList.contains("form-control")).to.be.true;
expect(input.placeholder).to.be.equal(schema.placeholder);
expect(input.readOnly).to.be.false;
expect(input.disabled).to.be.false;
});

it("should contain the value", (done) => {
vm.$nextTick( () => {
expect(input.value).to.be.equal("[email protected]");
done();
});
});

it("should set readOnly", (done) => {
schema.readonly = true;
vm.$nextTick( () => {
expect(input.readOnly).to.be.true;
done();
});
});

it("should set disabled", (done) => {
field.disabled = true;
vm.$nextTick( () => {
expect(input.disabled).to.be.true;
done();
});
});

it("input value should be the model value after changed", (done) => {
model.email = "[email protected]";
vm.$nextTick( () => {
expect(input.value).to.be.equal("[email protected]");
done();
});

});

it("model value should be the input value if changed", (done) => {
input.value = "[email protected]";
trigger(input, "input");

vm.$nextTick( () => {
expect(model.email).to.be.equal("[email protected]");
done();
});

});

});

});
107 changes: 107 additions & 0 deletions test/unit/specs/fields/fieldNumber.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import { expect } from "chai";
import { trigger } from "../util";

import Vue from "vue";
import FieldNumber from "src/fields/fieldNumber.vue";

Vue.component("FieldNumber", FieldNumber);

let el, vm, field;

function createField(schema = {}, model = null, disabled = false, options) {
el = document.createElement("div");
el.innerHTML = `<field-number :schema.sync="schema" :model.sync="model" :disabled="disabled" v-ref:field></field-number>`;
vm = new Vue({
el: el,
data: {
schema,
model,
disabled,
options
}
});

field = vm.$refs.field;
//console.log(el);
}

describe("fieldNumber.vue", () => {

describe("check template", () => {
let schema = {
type: "number",
label: "Age",
model: "age",
readonly: false,
min: 18,
max: 100,
placeholder: "Field placeholder"
};
let model = { age: 27 };
let input;

before( () => {
createField(schema, model, false);
input = el.getElementsByTagName("input")[0];
});

it("should contain az input number element", () => {
expect(field).to.be.exist;
expect(field.$el).to.be.exist;

expect(input).to.be.defined;
expect(input.type).to.be.equal("number");
expect(input.classList.contains("form-control")).to.be.true;
expect(input.placeholder).to.be.equal(schema.placeholder);
expect(input.readOnly).to.be.false;
expect(input.min).to.be.equal("18");
expect(input.max).to.be.equal("100");
expect(input.disabled).to.be.false;
});

it("should contain the value", (done) => {
vm.$nextTick( () => {
expect(input.value).to.be.equal("27");
done();
});
});

it("should set readOnly", (done) => {
schema.readonly = true;
vm.$nextTick( () => {
expect(input.readOnly).to.be.true;
done();
});
});

it("should set disabled", (done) => {
field.disabled = true;
vm.$nextTick( () => {
expect(input.disabled).to.be.true;
done();
});
});

it("input value should be the model value after changed", (done) => {
model.age = 35;
vm.$nextTick( () => {
expect(input.value).to.be.equal("35");
done();
});

});

it("model value should be the input value if changed", (done) => {
input.value = "50";
trigger(input, "input");

vm.$nextTick( () => {
expect(model.age).to.be.equal(50);
done();
});

});

});

});
Loading

0 comments on commit adb4f88

Please sign in to comment.