|
| 1 | +EventEmitter = require('events').EventEmitter |
| 2 | +Flat = require 'flat' |
| 3 | + |
1 | 4 | describe 'lib', -> |
| 5 | + |
| 6 | + Given -> @sock = new EventEmitter |
| 7 | + Given -> @sock.id = 1 |
| 8 | + Given -> @args = ['some event', {some: 'data'}] |
| 9 | + Given -> @cb = jasmine.createSpy 'cb' |
| 10 | + Given -> @line = '{"socket.id":1,"event.name":"some event","event.data.some":"data"}' |
2 | 11 |
|
3 | | - Given -> @lib = requireSubject 'lib', { |
| 12 | + Given -> @lib = requireSubject 'lib', |
4 | 13 | './../package.json': |
5 | 14 | version: 1 |
6 | | - } |
| 15 | + flat: Flat |
7 | 16 |
|
8 | 17 | describe '.version', -> |
9 | 18 |
|
10 | 19 | When -> @version = @lib.version |
11 | 20 | Then -> expect(@version).toEqual 1 |
12 | 21 |
|
| 22 | + describe '#defaultFormat', -> |
| 23 | + |
| 24 | + When -> @res = @lib.defaultFormat @sock, @args |
| 25 | + Then -> expect(@res).toEqual |
| 26 | + socket: |
| 27 | + id: 1 |
| 28 | + event: |
| 29 | + name: 'some event' |
| 30 | + data: |
| 31 | + some: 'data' |
| 32 | + |
13 | 33 | describe '#', -> |
14 | 34 |
|
15 | 35 | When -> @res = @lib() |
16 | 36 | Then -> expect(typeof @res).toBe 'function' |
17 | 37 | And -> expect(@res instanceof @lib).toBe true |
18 | 38 |
|
| 39 | + describe '#(options:Object)', -> |
| 40 | + |
| 41 | + Given -> @options = stream: write: -> |
| 42 | + When -> @res = @lib @options |
| 43 | + Then -> expect(typeof @res).toBe 'function' |
| 44 | + And -> expect(@res instanceof @lib).toBe true |
| 45 | + And -> expect(@res.stream()).toEqual @options.stream |
| 46 | + |
| 47 | + describe 'prototype', -> |
| 48 | + |
| 49 | + Given -> @logger = @lib() |
| 50 | + |
| 51 | + describe.only '# (sock:Object, args:Array)', -> |
| 52 | + |
| 53 | + Given -> @packet = data: @args |
| 54 | + Given -> @stream = jasmine.createSpyObj 'stream', ['write'] |
| 55 | + Given -> @logger.stream @stream |
| 56 | + Given -> @logger @sock, @cb |
| 57 | + When -> @sock.onevent @packet |
| 58 | + Then -> expect(@stream.write).toHaveBeenCalled() |
| 59 | + And -> expect(@stream.write.argsForCall[0][0]).toEqual @line + '\n' |
| 60 | + |
| 61 | + describe '#format', -> |
| 62 | + |
| 63 | + When -> @format = @logger.format() |
| 64 | + Then -> expect(typeof @format).toBe 'function' |
| 65 | + And -> expect(@format.length).toBe 2 |
| 66 | + And -> expect(@format).toEqual @lib.defaultFormat |
| 67 | + |
| 68 | + describe '#format (format:Function)', -> |
| 69 | + |
| 70 | + Given -> @format = (a, b) -> |
| 71 | + When -> @logger.format @format |
| 72 | + Then -> expect(@logger.format()).toEqual @format |
| 73 | + |
| 74 | + describe '#format (sock:Object, args:Array)', -> |
| 75 | + |
| 76 | + When -> @res = @logger.format @sock, @args |
| 77 | + And -> expect(@res).toEqual @line |
| 78 | + |
| 79 | + describe '#stream', -> |
| 80 | + |
| 81 | + When -> @stream = @logger.stream() |
| 82 | + Then -> expect(typeof @stream).toBe 'object' |
| 83 | + And -> expect(typeof @stream.write).toBe 'function' |
| 84 | + |
| 85 | + describe '#stream (stream:Object)', -> |
| 86 | + |
| 87 | + Given -> @stream = write: -> |
| 88 | + When -> @logger.stream @stream |
| 89 | + Then -> expect(@logger.stream()).toEqual @stream |
| 90 | + |
| 91 | + describe '#stream (stream:mixed)', -> |
| 92 | + |
| 93 | + Given -> @stream = 'crap' |
| 94 | + Given -> @existing = @logger.stream() |
| 95 | + When -> @logger.stream @stream |
| 96 | + Then -> expect(@logger.stream()).toEqual @existing |
0 commit comments