UNPKG

nested_json_to_csv

Version:
95 lines (94 loc) 3.96 kB
"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); }); });