UNPKG

3.06 kBtext/coffeescriptView Raw
1q = require 'q'
2Consumer = require '../lib/freddy/consumer'
3TestHelper = require './test_helper'
4
5describe 'Consumer', ->
6
7 before ->
8 @topicName = 'consumer-test-topic'
9
10 beforeEach (done) ->
11 TestHelper.connect().done (@connection) =>
12 @consumer = new Consumer(@connection, TestHelper.logger('warn'))
13 done()
14
15 after (done) ->
16 TestHelper.deleteExchange(@connection, @topicName)
17 .then =>
18 @connection.close()
19 .done ->
20 done()
21
22 context '#prepare', ->
23 it 'resolves when done', (done) ->
24 @consumer.prepare(@topicName).then ->
25 done()
26
27 context 'when prepared', ->
28 beforeEach (done) ->
29 @consumer.prepare(@topicName).then ->
30 done()
31
32 context '#consume', ->
33 beforeEach ->
34 @queue = "consumer-test-queue.#{Math.random()*100}"
35 @msg = test: 'data'
36
37 afterEach (done) ->
38 @connection.createChannel().then (channel) =>
39 channel.deleteQueue(@queue)
40 done()
41
42 it 'resolves when done', (done) ->
43 @consumer.consume(@queue, (->)).then ->
44 done()
45
46 it 'receives the correct message', (done) ->
47 @consumer.consume @queue, (message) =>
48 message.should.eql(@msg)
49 done()
50 .done =>
51 TestHelper.deliver(@connection, @queue, @topicName, @msg)
52
53 context '#responderHandler', ->
54 beforeEach (done) ->
55 @receivedMessages = 0
56 @consumer.consume @queue, =>
57 @receivedMessages += 1
58 .done (@responderHandler) =>
59 done()
60
61 it 'has the queue', ->
62 @responderHandler.queue.should.eql(@queue)
63
64 it 'can cancel consuming', (done) ->
65 TestHelper.deliver(@connection, @queue, @topicName, @msg)
66 q.delay(5)
67 .then =>
68 @responderHandler.cancel()
69 .then =>
70 TestHelper.deliver(@connection, @queue, @topicName, @msg)
71 q.delay(5)
72 .done =>
73 @receivedMessages.should.eql(1)
74 done()
75
76 context '#tapInto', ->
77 before ->
78 @queue = "test.mix.best.#{Math.random()*100}"
79 @msg = test: 'data'
80
81 afterEach (done) ->
82 @responderHandler.cancel().then =>
83 done()
84
85 it 'receives messages by * wildcard', (done) ->
86 @consumer.tapInto 'test.*.best.#', (message) =>
87 message.should.eql(@msg)
88 done()
89 .done (@responderHandler) =>
90 TestHelper.deliver @connection, @queue, @topicName, @msg
91
92 it 'receives messages by # wildcard', (done) ->
93 @consumer.tapInto '#.best.#', (message) =>
94 message.should.eql(@msg)
95 done()
96 .done (@responderHandler) =>
97 TestHelper.deliver @connection, @queue, @topicName, @msg
98
99 it 'has the destination', (done) ->
100 @consumer.tapInto '#', (message, destination) =>
101 destination.should.eql(@queue)
102 done()
103 .done (@responderHandler) =>
104 return q(TestHelper.deliver @connection, @queue, @topicName, msg: 'yes')