jenesius-vue-form
Version:
Heavy form system for Vue.js
103 lines (86 loc) • 2.84 kB
text/typescript
import Form from "../../../src/classes/Form";
describe("Form revert changes", () => {
test("Revert data from parent component", () => {
const form = new Form();
form.change({
name: "Jenesius"
})
form.revert()
expect(form.values).toEqual({})
})
test("Revert data only for child", () => {
const form = new Form();
const child = new Form({
name: "address"
})
form.subscribe(child);
form.change({
address: {
city: "Mogilev"
},
username: "Jenesius"
})
child.revert();
expect(form.values).toEqual({
username: "Jenesius"
})
expect(child.values).toEqual({});
})
test("Revert data from parent", () => {
const form = new Form();
const child = new Form({name: "address"});
form.subscribe(child);
form.change({
address: {
name: "aa"
},
aa: 123
})
form.revert();
expect(form.values).toEqual({})
expect(child.values).toEqual({})
})
test("Reverting changes that has default values.", () => {
const form = new Form();
form.setValues({
coordinate: {
x: "13"
}
})
form.change({
["coordinate.x"]: "100"
})
expect(form.values).toEqual({coordinate: {x: "100"}})
expect(form.changes).toEqual({coordinate: {x: "100"}})
expect(form.changed).toBe(true)
form.revert();
expect(form.values).toEqual({coordinate: {x: "13"}})
expect(form.changes).toEqual({})
})
test("Autonomic Form: revert from children form has not effect for parent", () => {
const parent = new Form();
const child = new Form({
name: "test",
parent,
autonomic: true
})
parent.change({ name: "Jack"} );
child.change({age: 20});
child.revert();
expect(parent.changes).toEqual({name: "Jack"});
expect(child.changes).toEqual({})
})
test("Autonomic Form: revert from parent form has not effect for children", () => {
const parent = new Form();
const child = new Form({
name: "test",
parent,
autonomic: true
})
parent.change({ name: "Jack"} );
child.change({age: 20});
parent.revert();
expect(parent.changes).toEqual({});
expect(child.changes).toEqual({age: 20})
})
})