UNPKG

nested_json_to_csv

Version:
52 lines (50 loc) 2.01 kB
import { IFactory } from "../interfaces/IFactory"; import { IParser } from "../interfaces/IParser"; import { Csv } from "../models/Csv"; import { ParserFactory } from "../providers/factories/ParserFactory"; import { FileSystemService } from "../providers/services/FileSystemService"; import { JsonParserService } from "../providers/services/JsonParserService"; import fs from "fs"; import { CsvParserService } from "../providers/services/CsvParserService"; describe("FileIO test", () => { test("Create a csv file", (done) => { const json = { user: { name: "fox", uid: "31245324", address: { city: "nowhere" } }, child: { name: "fox", uid: "31245324", address: { city: "where" } }, }; let parserFactory: IFactory = new ParserFactory(); const parser: IParser = parserFactory.make("jsonParser", json, { hasId: true, single: false, }); const headers = ["uid", "name", "address.city"]; const csv: Csv = parser.parse(headers); const data: string = csv.make(); const fileSystemService: FileSystemService = new FileSystemService( "data.csv", "./Data" ); fileSystemService.write(data).then(() => { const exists: boolean = fs.existsSync(fileSystemService.getFullPath()); expect(exists).toEqual(true); done(); }); }); test("Create a json file", (done) => { const headers = ["id", "uid", "name", "address.city"]; const body = "user,31245323,fox,nowhere,\nchild,31245324,fox,where,\n"; const csv: Csv = new Csv(headers, body); let parserFactory: IFactory = new ParserFactory(); const parser: IParser = parserFactory.make("csvParser", csv); const json = parser.parse(); const fileSystemService: FileSystemService = new FileSystemService( "data.json", "./Data" ); fileSystemService.write(JSON.stringify(json)).then(() => { const exists: boolean = fs.existsSync(fileSystemService.getFullPath()); expect(exists).toEqual(true); done(); }); }); });