1 |
|
2 |
|
3 | var 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 |
|
9 | var 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 |
|
17 | fs.createReadStream(file).pipe(parser)
|
18 |
|
19 | parser.on('header', function (data) {
|
20 | headerCalled ++
|
21 | it(data).deepEqual({
|
22 | total_rows: 129,
|
23 | offset: 0
|
24 | })
|
25 | })
|
26 |
|
27 | parser.on('footer', function (data) {
|
28 | footerCalled ++
|
29 | it(data).deepEqual({
|
30 | foo: { bar: 'baz' }
|
31 | })
|
32 | })
|
33 |
|
34 | parser.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 |
|
45 | parser.on('end', function () {
|
46 | ended = true
|
47 | })
|
48 |
|
49 | process.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 | })
|