sdmpr
Version:
Simple Data Mapper
140 lines (106 loc) • 4.76 kB
text/typescript
import { expect } from "chai"
import { ICaseStyleOptions } from "./../src/CaseStyle";
import { SimpleDataMapper } from "../src/SimpleDataMapper"
import { CaseStyle } from "../src/CaseStyle"
import sdmpr from "../src/"
describe("SimpleDataMapper", () => {
it("Should create mapper", () => {
const mapper1 = SimpleDataMapper.create()
mapper1.map("hello", "world")
const data1 = { hello: "Hello there" }
const data2 = mapper1.transform(data1)
expect(data2.world).exist
expect(data2.world).to.equal("Hello there")
})
it("Should map multiple fields", () => {
const mapper1 = SimpleDataMapper.create()
mapper1.map("first_name", "firstName")
mapper1.map("last_name", "lastName")
mapper1.map("age")
const data1 = { first_name: "Evo", last_name: "Zumo", age: 16 }
const data2 = mapper1.transform(data1)
expect(data2.firstName).to.equal("Evo")
expect(data2.lastName).to.equal("Zumo")
expect(data2.age).to.equal(16)
})
it("Should map to CamelCase", () => {
const mapper1 = SimpleDataMapper.create()
mapper1.mapToCamelCase()
const data1 = { first_name: "Evo", last_name: "Zumo", age: 16 }
const data2 = mapper1.transform(data1)
expect(data2.firstName).to.equal("Evo")
expect(data2.lastName).to.equal("Zumo")
expect(data2.age).to.equal(16)
})
it("Should map to SnakeCase", () => {
const mapper1 = SimpleDataMapper.create()
mapper1.mapToSnakeCase()
const data1 = { firstName: "Evo", lastName: "Zumo", age: 16 }
const data2 = mapper1.transform(data1)
expect(data2.first_name).to.equal("Evo")
expect(data2.last_name).to.equal("Zumo")
expect(data2.age).to.equal(16)
})
it("Should map to CamelCase in one step", () => {
const data1 = { first_name: "Evo", last_name: "Zumo", age: 16 }
const data2 = SimpleDataMapper.toCamelCase(data1)
expect(data2.firstName).to.equal("Evo")
expect(data2.lastName).to.equal("Zumo")
expect(data2.age).to.equal(16)
})
it("Should map to SnakeCase in one step", () => {
const data1 = { firstName: "Evo", lastName: "Zumo", age: 16 }
const data2 = SimpleDataMapper.toSnakeCase(data1)
expect(data2.first_name).to.equal("Evo")
expect(data2.last_name).to.equal("Zumo")
expect(data2.age).to.equal(16)
})
it("Should map to all lower case in one step", () => {
const data1 = { firstName: "Evo", lastName: "Zumo", age: 16, address: { streetName: "Main Str" } }
const data2 = SimpleDataMapper.toLowerCase(data1)
expect(data2.firstname).to.equal("Evo")
expect(data2.lastname).to.equal("Zumo")
expect(data2.address.streetname).to.equal("Main Str")
expect(data2.age).to.equal(16)
})
it("Should map to all upper case in one step", () => {
const data1 = { firstName: "Evo", lastName: "Zumo", age: 16, address: { streetName: "Main Str" } }
const data2 = SimpleDataMapper.toUpperCase(data1)
expect(data2.FIRSTNAME).to.equal("Evo")
expect(data2.LASTNAME).to.equal("Zumo")
expect(data2.ADDRESS.STREETNAME).to.equal("Main Str")
expect(data2.AGE).to.equal(16)
})
it("Should map to snake case using changeCase", () => {
const data1 = { firstName: "Evo", lastName: "Zumo", age: 16, address: { streetName: "Main Str" } }
const data2 = SimpleDataMapper.changeCase(data1, CaseStyle.SNAKE)
expect(data2.first_name).to.equal("Evo")
expect(data2.last_name).to.equal("Zumo")
expect(data2.address.street_name).to.equal("Main Str")
expect(data2.age).to.equal(16)
})
it("Should map to camel case using changeCase with options", () => {
const data1 = { first_name: "Evo", last_name: "Zumo", age: 16, main_address: { street_name: "Main Str" } }
const data2 = SimpleDataMapper.changeCase(data1, CaseStyle.CAMEL, { keep: ["main_address"], keepChildNodes: true })
expect(data2.firstName).to.equal("Evo")
expect(data2.lastName).to.equal("Zumo")
expect(data2.main_address.street_name).to.equal("Main Str")
expect(data2.age).to.equal(16)
})
})
describe("sdmpr", () => {
it("Should create mapper using sdmpr", () => {
const mapper1 = sdmpr.create()
mapper1.map("hello", "sdmpr")
const data1 = { hello: "Hello sdmpr" }
const data2 = mapper1.transform(data1)
expect(data2.sdmpr).exist
expect(data2.sdmpr).to.equal("Hello sdmpr")
})
it("Should map to camel case using toCamelCase", () => {
const data1 = { first_name: "Pixie", last_name: "Dorry", age: 3.14 }
const data2 = sdmpr.toCamelCase(data1)
expect(data2.firstName).to.equal("Pixie")
expect(data2.lastName).to.equal("Dorry")
})
})