1 | Freddy = require '../lib/freddy'
|
2 | TestHelper = (require './test_helper')
|
3 | q = require 'q'
|
4 |
|
5 | describe 'Freddy', ->
|
6 | before -> @msg = test: 'data'
|
7 |
|
8 | it 'exists', ->
|
9 | Freddy.should.exist
|
10 |
|
11 | context 'with correct amqp url', ->
|
12 | it 'can connect to amqp', (done) ->
|
13 | Freddy.connect(TestHelper.amqpUrl, TestHelper.logger('warn')).done =>
|
14 | done()
|
15 | , =>
|
16 | done Error("Connection should have succeeded, but failed")
|
17 |
|
18 | context 'with incorrect amqp url', ->
|
19 | it 'cannot connect', (done) ->
|
20 | Freddy.connect('amqp://wrong:wrong@localhost:9000', TestHelper.logger('warn')).done (@freddy) ->
|
21 | done(Error("Connection should have failed, but succeed"))
|
22 | , =>
|
23 | done()
|
24 |
|
25 | context 'when connected', ->
|
26 | beforeEach (done) ->
|
27 | @randomDest = TestHelper.uniqueId()
|
28 | Freddy.connect('amqp://guest:guest@localhost:5672', TestHelper.logger('warn')).done (@freddy) =>
|
29 | done()
|
30 | , (err) ->
|
31 | done(err)
|
32 |
|
33 | afterEach (done) ->
|
34 | @freddy.shutdown().done ->
|
35 | done()
|
36 |
|
37 | it 'can produce messages', ->
|
38 | @freddy.deliver @randomDest, @msg
|
39 |
|
40 | describe 'when responding to messages', ->
|
41 |
|
42 | it 'catches errors', (done) ->
|
43 | myError = new Error('catch me')
|
44 | Freddy.addErrorListener (err) ->
|
45 | err.should.eql(myError)
|
46 | done()
|
47 |
|
48 | @freddy.respondTo @randomDest, (message, msgHandler) ->
|
49 | throw myError
|
50 | .done =>
|
51 | @freddy.deliver @randomDest, {}
|
52 |
|
53 | describe 'with messages that need acknowledgement', ->
|
54 | it 'can produce', ->
|
55 | @freddy.deliverWithAck @randomDest, @msg, (->)
|
56 |
|
57 | describe 'with messages that need response', ->
|
58 | it 'can produce', ->
|
59 | @freddy.deliverWithResponse @randomDest, @msg, (->)
|
60 |
|
61 | describe 'when tapping', ->
|
62 | it "doesn't consume message", (done) ->
|
63 | tapPromise = q.defer()
|
64 | respondPromise = q.defer()
|
65 | @freddy.tapInto @randomDest, =>
|
66 | tapPromise.resolve()
|
67 | .then =>
|
68 | @freddy.respondTo @randomDest, =>
|
69 | respondPromise.resolve()
|
70 | .done =>
|
71 | q.all([tapPromise, respondPromise]).then ->
|
72 | done()
|
73 | @freddy.deliver @randomDest, @msg |
\ | No newline at end of file |