2023-05-02 21:44:25 +12:00
|
|
|
import { jsonFromCsvString } from "../csv"
|
|
|
|
|
|
|
|
describe("csv", () => {
|
|
|
|
describe("jsonFromCsvString", () => {
|
|
|
|
test("multiple lines csv can be casted", async () => {
|
|
|
|
const csvString = '"id","title"\n"1","aaa"\n"2","bbb"'
|
|
|
|
|
|
|
|
const result = await jsonFromCsvString(csvString)
|
|
|
|
|
|
|
|
expect(result).toEqual([
|
|
|
|
{ id: "1", title: "aaa" },
|
|
|
|
{ id: "2", title: "bbb" },
|
|
|
|
])
|
2023-05-02 22:57:18 +12:00
|
|
|
result.forEach(r => expect(Object.keys(r)).toEqual(["id", "title"]))
|
|
|
|
})
|
|
|
|
|
|
|
|
test("empty values are casted as undefined", async () => {
|
|
|
|
const csvString =
|
|
|
|
'"id","optional","title"\n1,,"aaa"\n2,"value","bbb"\n3,,"ccc"'
|
|
|
|
|
|
|
|
const result = await jsonFromCsvString(csvString)
|
|
|
|
|
|
|
|
expect(result).toEqual([
|
|
|
|
{ id: "1", optional: undefined, title: "aaa" },
|
|
|
|
{ id: "2", optional: "value", title: "bbb" },
|
|
|
|
{ id: "3", optional: undefined, title: "ccc" },
|
|
|
|
])
|
|
|
|
result.forEach(r =>
|
|
|
|
expect(Object.keys(r)).toEqual(["id", "optional", "title"])
|
|
|
|
)
|
2023-05-02 21:44:25 +12:00
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|