Files
xml-streamer/test/uncompressed.spec.ts
2025-07-01 23:21:56 +02: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)
})
})