| |
| |
| var fs = require ('fs') |
| , join = require('path').join |
| , file = join(__dirname, 'fixtures','header_footer.json') |
| , JSONStream = require('../') |
| , it = require('it-is') |
| |
| var expected = JSON.parse(fs.readFileSync(file)) |
| , parser = JSONStream.parse(['rows', /\d+/ /*, 'value'*/]) |
| , called = 0 |
| , headerCalled = 0 |
| , footerCalled = 0 |
| , ended = false |
| , parsed = [] |
| |
| fs.createReadStream(file).pipe(parser) |
| |
| parser.on('header', function (data) { |
| headerCalled ++ |
| it(data).deepEqual({ |
| total_rows: 129, |
| offset: 0 |
| }) |
| }) |
| |
| parser.on('footer', function (data) { |
| footerCalled ++ |
| it(data).deepEqual({ |
| foo: { bar: 'baz' } |
| }) |
| }) |
| |
| parser.on('data', function (data) { |
| called ++ |
| it.has({ |
| id: it.typeof('string'), |
| value: {rev: it.typeof('string')}, |
| key:it.typeof('string') |
| }) |
| it(headerCalled).equal(1) |
| parsed.push(data) |
| }) |
| |
| parser.on('end', function () { |
| ended = true |
| }) |
| |
| process.on('exit', function () { |
| it(called).equal(expected.rows.length) |
| it(headerCalled).equal(1) |
| it(footerCalled).equal(1) |
| it(parsed).deepEqual(expected.rows) |
| console.error('PASSED') |
| }) |