Files
xml-streamer/test/uncompressed.spec.ts
2019-05-31 11:27:48 +03:00

65 lines
1.7 KiB
TypeScript

import fs from "fs";
import "mocha";
import should from "should";
import stream from "stream";
import zlib from "zlib";
import { XmlParser } from "../src/parser";
describe("should properly handle uncompressed files", () => {
it("should properly parse a uncompressed xml file.", (done) => {
const xmlStream = fs.createReadStream("./test/TestFiles/medium.xml");
const parser = new XmlParser({ resourcePath: "/items/item" });
const gzip = zlib.createGzip();
const gunzip = zlib.createGunzip();
let dataEventCount = 0;
parser.on("data", (data) => {
dataEventCount++;
});
parser.on("error", (err) => {
done(err);
});
parser.on("end", () => {
// console.log('dataEventCount=', dataEventCount)
should(dataEventCount).equal(10);
done();
});
xmlStream.pipe(gzip).pipe(gunzip).pipe(parser);
});
it("should properly parse uncompressed file and go fine with pause and resume.", function(done) {
const xmlStream = fs.createReadStream("./test/TestFiles/medium.xml");
const parser = new XmlParser({ resourcePath: "/items/item" });
const gzip = zlib.createGzip();
const gunzip = zlib.createGunzip();
let dataEventCount = 0;
let isSetTimeoutHappened = true;
this.timeout(20000);
parser.on("data", (data) => {
parser.pause();
should(isSetTimeoutHappened).equal(true);
setTimeout(() => {
parser.resume();
isSetTimeoutHappened = true;
}, 2000);
dataEventCount++;
isSetTimeoutHappened = false;
});
parser.on("error", (err) => {
done(err);
});
parser.on("end", () => {
// console.log('dataEventCount=', dataEventCount)
should(dataEventCount).equal(10);
done();
});
xmlStream.pipe(gzip).pipe(gunzip).pipe(parser);
});
});