UNPKG

2.22 kBtext/coffeescriptView Raw
1Freddy = require '../lib/freddy'
2TestHelper = (require './test_helper')
3q = require 'q'
4
5describe '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