summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/JSONStream/test/header_footer.js
blob: ef0187940ed128a62c5f05ca7a552aa6fa1019bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54


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')
  })
  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')
})