UNPKG

3.1 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({
39 setup: (amqpChannel) =>
40 amqpChannel.deleteQueue(@queue)
41 done()
42 })
43
44 it 'resolves when done', (done) ->
45 @consumer.consume(@queue, (->)).then ->
46 done()
47
48 it 'receives the correct message', (done) ->
49 @consumer.consume @queue, (message) =>
50 message.should.eql(@msg)
51 done()
52 .done =>
53 TestHelper.deliver(@connection, @queue, @topicName, @msg)
54
55 context '#responderHandler', ->
56 beforeEach (done) ->
57 @receivedMessages = 0
58 @consumer.consume @queue, =>
59 @receivedMessages += 1
60 .done (@responderHandler) =>
61 done()
62
63 it 'has the queue', ->
64 @responderHandler.queue.should.eql(@queue)
65
66 it 'can cancel consuming', (done) ->
67 TestHelper.deliver(@connection, @queue, @topicName, @msg)
68 q.delay(25)
69 .then =>
70 @responderHandler.cancel()
71 .then =>
72 TestHelper.deliver(@connection, @queue, @topicName, @msg)
73 q.delay(25)
74 .done =>
75 @receivedMessages.should.eql(1)
76 done()
77
78 context '#tapInto', ->
79 before ->
80 @queue = "test.mix.best.#{Math.random()*100}"
81 @msg = test: 'data'
82
83 afterEach (done) ->
84 @responderHandler.cancel().then =>
85 done()
86
87 it 'receives messages by * wildcard', (done) ->
88 @consumer.tapInto 'test.*.best.#', (message) =>
89 message.should.eql(@msg)
90 done()
91 .done (@responderHandler) =>
92 TestHelper.deliver @connection, @queue, @topicName, @msg
93
94 it 'receives messages by # wildcard', (done) ->
95 @consumer.tapInto '#.best.#', (message) =>
96 message.should.eql(@msg)
97 done()
98 .done (@responderHandler) =>
99 TestHelper.deliver @connection, @queue, @topicName, @msg
100
101 it 'has the destination', (done) ->
102 @consumer.tapInto '#', (message, destination) =>
103 destination.should.eql(@queue)
104 done()
105 .done (@responderHandler) =>
106 return q(TestHelper.deliver @connection, @queue, @topicName, msg: 'yes')