nested_json_to_csv
Version:
52 lines (50 loc) • 2.01 kB
text/typescript
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();
});
});
});