jenesius-vue-form
Version:
Heavy form system for Vue.js
57 lines (54 loc) • 1.77 kB
text/typescript
import insertByName from "../../../src/utils/insert-by-name";
describe("Insert by name", () => {
test("Should insert simple field", () => {
const data = {}
insertByName(data, "name", "Jenesius");
expect(data).toEqual({name: "Jenesius"})
})
test("Should parse and insert hard field name", () => {
const data = {};
insertByName(data, "address.name.city", "Berlin");
expect(data).toEqual({address: { name: { city: "Berlin" } }})
})
test("Override data", () => {
const data = {
address: null
}
insertByName(data, "address.city.name", "Berlin");
expect(data).toEqual({address: { city: { name: "Berlin" } }})
})
test("Insert empty object", () => {
const data = {};
insertByName(data, "address", {});
expect(data).toEqual({
address: {}
})
})
test("Simple path", () => {
const data = {};
insertByName(data, "name", "Jenesius")
expect(data).toEqual({name: "Jenesius"})
})
test("Deepen name", () => {
const data = {}
insertByName(data, "name.local", "JNSS")
expect(data).toEqual({name: { local: "JNSS"}})
})
test("Merge field", () => {
const data = {address: {city: "Berlin"}}
insertByName(data, "address.country", "German")
expect(data)
.toEqual({
address: {
city: "Berlin",
country: "German"
}
})
})
test("Override value", () => {
const data = {name: "Jenesius"}
insertByName(data, "name", "JNSS")
expect(data)
.toEqual({name: "JNSS"})
})
})