• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2
3var fs = require ('fs')
4  , join = require('path').join
5  , file = join(__dirname, 'fixtures','header_footer.json')
6  , JSONStream = require('../')
7  , it = require('it-is')
8
9var expected = JSON.parse(fs.readFileSync(file))
10  , parser = JSONStream.parse(['rows', /\d+/ /*, 'value'*/])
11  , called = 0
12  , headerCalled = 0
13  , footerCalled = 0
14  , ended = false
15  , parsed = []
16
17fs.createReadStream(file).pipe(parser)
18
19parser.on('header', function (data) {
20  headerCalled ++
21  it(data).deepEqual({
22    total_rows: 129,
23    offset: 0
24  })
25})
26
27parser.on('footer', function (data) {
28  footerCalled ++
29  it(data).deepEqual({
30    foo: { bar: 'baz' }
31  })
32})
33
34parser.on('data', function (data) {
35  called ++
36  it.has({
37    id: it.typeof('string'),
38    value: {rev: it.typeof('string')},
39    key:it.typeof('string')
40  })
41  it(headerCalled).equal(1)
42  parsed.push(data)
43})
44
45parser.on('end', function () {
46  ended = true
47})
48
49process.on('exit', function () {
50  it(called).equal(expected.rows.length)
51  it(headerCalled).equal(1)
52  it(footerCalled).equal(1)
53  it(parsed).deepEqual(expected.rows)
54  console.error('PASSED')
55})
56