Skip to content

Commit cd5656a

Browse files
committed
Add tests for sse and argument parsing
1 parent 8f69358 commit cd5656a

File tree

5 files changed

+76
-7
lines changed

5 files changed

+76
-7
lines changed

src/index.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
const micro = require('micro')
22
const SSE = require('sse')
3-
const args = require('args');
4-
5-
const flags = args
6-
.option(['p', 'port'], 'Port to listen on', process.env.PORT || 3000, Number)
7-
.option(['H', 'host'], 'Host to listen on', '0.0.0.0')
8-
.option(['a', 'adapter'], 'Database adapter used', process.env.DB_ADAPTER || 'flat-file-db')
9-
.parse(process.argv, { name: 'micro-analytics' })
103

4+
const parseArgs = require('./parseArgs')
115
const db = require('./db');
6+
7+
const flags = parseArgs(process.argv)
8+
129
db.initDbAdapter(flags.adapter)
1310

1411
const handler = require('./handler')

src/parseArgs.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
const args = require('args');
3+
4+
module.exports = function parseArgs(argv) {
5+
return args
6+
.option(['p', 'port'], 'Port to listen on', process.env.PORT || 3000, Number)
7+
.option(['H', 'host'], 'Host to listen on', process.env.HOST ||'0.0.0.0')
8+
.option(['a', 'adapter'], 'Database adapter used', process.env.DB_ADAPTER || 'flat-file-db')
9+
.parse(argv, { name: 'micro-analytics' })
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
exports[`parseArgs should have correct defaults 1`] = `
2+
Object {
3+
"H": "0.0.0.0",
4+
"a": "flat-file-db",
5+
"adapter": "flat-file-db",
6+
"host": "0.0.0.0",
7+
"p": 3000,
8+
"port": 3000,
9+
}
10+
`;
11+
12+
exports[`parseArgs should use DB_ADAPTER environment variable as default if set 1`] = `"flat-file-db"`;

tests/parseArgs.test.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
jest.mock('pkginfo', () => () => ({version: '1.0.0'}))
2+
const parseArgs = require('../src/parseArgs')
3+
4+
5+
describe('parseArgs', () => {
6+
it("should have correct defaults", () => {
7+
expect(parseArgs(['node', 'micro-analytics'])).toMatchSnapshot();
8+
})
9+
10+
it("should use DB_ADAPTER environment variable as default if set", () => {
11+
process.env.DB_ADAPTER = 'redis'
12+
expect(parseArgs(['node', 'micro-analytics']).adapter).toEqual('redis');
13+
delete process.env.DB_ADAPTER
14+
})
15+
16+
it("should use PORT environment variable as default if set", () => {
17+
process.env.PORT = '3000'
18+
expect(parseArgs(['node', 'micro-analytics']).port).toEqual(3000);
19+
delete process.env.PORT
20+
})
21+
22+
it("should use HOST environment variable as default if set", () => {
23+
process.env.HOST = 'localhost'
24+
expect(parseArgs(['node', 'micro-analytics']).host).toEqual('localhost');
25+
delete process.env.HOST
26+
})
27+
})

tests/sse.test.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const { listen, mockDb } = require('./utils')
2+
jest.mock('flat-file-db', () => mockDb)
3+
const db = require('../src/db')
4+
const sseHandler = require('../src/sse')
5+
let url
6+
7+
db.initDbAdapter('flat-file-db');
8+
9+
beforeEach(() => {
10+
mockDb._reset()
11+
})
12+
13+
describe('sse', () => {
14+
it("should publish events", () => {
15+
const sendMock = jest.fn()
16+
const eventListenerMock = jest.fn()
17+
sseHandler({send: sendMock, on: eventListenerMock})
18+
19+
db.put('superview', { views: [{ time: 1490432584312 }] })
20+
21+
expect(sendMock).toHaveBeenCalled()
22+
})
23+
})

0 commit comments

Comments
 (0)