jenesius-vue-form
Version:
Heavy form system for Vue.js
94 lines (70 loc) • 2.4 kB
text/typescript
import {mount} from "@vue/test-utils";
import App from "./components/App.vue";
import Form from "./../../src/classes/Form"
function wait(n = 10) {
return new Promise(resolve => setTimeout(resolve, n))
}
describe("Dynamic form values.", () => {
test("The form should update the values, after entering data in input.", async () => {
const app = mount(App) as any;
const form = app.vm.form;
await app.get('input').setValue('Jenesius');
expect(form.values).toEqual({
username: "Jenesius"
})
})
test("Input should get value from FormModel after mounted.", async () => {
const app = mount(App) as any;
const form = app.vm.form as Form;
const show = app.vm.showFieldAge;
expect(form.values).toEqual({});
form.setValues({
age: "1998"
})
expect(form.values).toEqual({
age: "1998"
})
show();
await wait(50);
const inputAge = app.find('input[name=age]').element as HTMLInputElement;
const value = inputAge.value;
expect(value).toEqual("1998")
})
test("The form should update the composite dependency after handle input.", async () => {
const app = mount(App) as any;
const form = app.vm.form;
await app.get('input[name=x]').setValue('123');
expect(form.values).toEqual({
coordinate: {
x: '123'
}
})
})
test('The input must be empty after executing cleanValues.', async () => {
const app = await mount(App) as any;
const form = app.vm.form as Form;
const inputUsername = app.get('input[name=username]');
await inputUsername.setValue('Jenesius');
expect(form.values).toEqual({
username: "Jenesius"
})
form.cleanValues();
expect(form.values).toEqual({});
await wait();
expect(inputUsername.value).toBe(undefined)
})
test("Reverting changes", async () => {
const app = mount(App);
const form = (app.vm as any).form as Form;
form.setValues({ coordinate: {x : "13"} })
await app.get('input[name=x]').setValue("100");
expect(form.values).toEqual({ coordinate: {x: "100"} })
expect(form.changes).toEqual({ coordinate: {x: "100"} })
expect(form.pureValues).toEqual({ coordinate: {x: "13"} })
expect(form.changed).toBe(true)
form.revert();
expect(form.values).toEqual({ coordinate: {x: "13"} })
expect(form.changes).toEqual({ })
expect(form.changed).toBe(false)
})
})