nested_json_to_csv
Version:
95 lines (94 loc) • 3.96 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ParserFactory_1 = require("../providers/factories/ParserFactory");
const JsonParserService_1 = require("../providers/services/JsonParserService");
describe("Json test", () => {
test("simple single json to csv", () => {
const json = {
name: "fox",
id: "31245324",
};
let parserFactory = new ParserFactory_1.ParserFactory();
const parser = parserFactory.make("jsonParser", json, {
hasId: false,
single: true,
});
expect(parser).toBeInstanceOf(JsonParserService_1.JsonParserService);
const headers = ["id", "name"];
const csv = parser.parse(headers);
const data = csv.make();
const rows = csv.makeRows().getRows();
expect(rows).toEqual([["31245324", "fox"]]);
expect(data).toEqual("id,name\n31245324,fox,");
expect(csv.getHeaders()).toEqual(headers);
});
test("simple mutiple json to csv", () => {
const json = {
user: { name: "fox", id: "31245324" },
child: { name: "fox", id: "31245324" },
};
let parserFactory = new ParserFactory_1.ParserFactory();
const parser = parserFactory.make("jsonParser", json, {
hasId: false,
single: false,
});
expect(parser).toBeInstanceOf(JsonParserService_1.JsonParserService);
const headers = ["id", "name"];
const csv = parser.parse(headers);
const data = csv.make();
const rows = csv.makeRows().getRows();
expect(rows).toEqual([
["31245324", "fox"],
["31245324", "fox"],
]);
expect(data).toEqual("id,name\n31245324,fox,\n31245324,fox,\n");
expect(csv.getHeaders()).toEqual(headers);
});
test("complex nested json to csv", () => {
const json = {
user: { name: "fox", uid: "31245324", address: { city: "nowhere" } },
child: { name: "fox", uid: "31245324", address: { city: "where" } },
};
let parserFactory = new ParserFactory_1.ParserFactory();
const parser = parserFactory.make("jsonParser", json, {
hasId: true,
single: false,
});
expect(parser).toBeInstanceOf(JsonParserService_1.JsonParserService);
const headers = ["uid", "name", "address.city"];
const csv = parser.parse(headers);
const data = csv.make();
const rows = csv.makeRows().getRows();
expect(rows).toEqual([
["user", "31245324", "fox", "nowhere"],
["child", "31245324", "fox", "where"],
]);
expect(data).toEqual("id,uid,name,address.city\nuser,31245324,fox,nowhere,\nchild,31245324,fox,where,\n");
expect(csv.getHeaders()).toEqual(headers);
});
test("complex nested json to csv with defualt values", () => {
const json = {
user: { name: "fox", uid: "31245324", address: { city: "nowhere" } },
child: { name: "fox", uid: "31245324" },
};
let parserFactory = new ParserFactory_1.ParserFactory();
const options = {
hasId: true,
single: false,
setDefaultValues: true,
};
const parser = parserFactory.make("jsonParser", json, options);
expect(parser).toBeInstanceOf(JsonParserService_1.JsonParserService);
const headers = ["uid", "name", "address.city"];
const csv = parser.parse(headers);
const data = csv.make();
const rows = csv.makeRows().getRows();
console.log(rows);
expect(rows).toEqual([
["user", "31245324", "fox", "nowhere"],
["child", "31245324", "fox"],
]);
expect(data).toEqual("id,uid,name,address.city\nuser,31245324,fox,nowhere,\nchild,31245324,fox,,\n");
expect(csv.getHeaders()).toEqual(headers);
});
});