UNPKG

3.39 kBtext/coffeescriptView Raw
1Request = require '../lib/nodelib/request'
2Consumer = require '../lib/nodelib/consumer'
3Producer = require '../lib/nodelib/producer'
4TestHelper = (require './test_helper')
5
6describe 'Request', ->
7
8 before ->
9 @topicName = 'test-topic'
10
11 beforeEach ->
12 @options = {}
13 @message = 'test'
14
15 beforeEach (done) ->
16 TestHelper.connect().done (@connection) =>
17 @producer = new Producer connection, TestHelper.logger('warn')
18 @consumer = new Consumer connection, TestHelper.logger('warn')
19 @producer.prepare(@topicName)
20 .then =>
21 @consumer.prepare(@topicName)
22 .done =>
23 @request = new Request connection, TestHelper.logger('warn')
24 done()
25
26 afterEach (done) ->
27 TestHelper.deleteExchange(@connection, @topicName)
28 .then =>
29 @connection.close()
30 .done ->
31 done()
32
33 context '#prepare', ->
34 it 'resolves after done', (done) ->
35 @request.prepare(@consumer, @producer).done ->
36 done()
37 , =>
38 done Error("Prepare should have succeeded but failed")
39
40 context 'when prepared', ->
41 beforeEach (done) ->
42 @request.prepare(@consumer, @producer).done ->
43 done()
44
45 context '#deliverWithAckAndOptions', ->
46 before ->
47 @destination = 'ack-test'
48 @subject = =>
49 @request.deliverWithAckAndOptions @destination, @message, @options, @callback
50
51 it 'returns error if message was neither acked nor nacked', (done) ->
52 @options = timeout: 0.01
53 @callback = (error) =>
54 error.should.eql("Timeout waiting for response")
55 done()
56 @subject()
57
58 context 'when message was acked', ->
59 beforeEach (done) ->
60 @request.respondTo @destination, (message, msgHandler) ->
61 msgHandler.ack()
62 .done -> done()
63
64 it 'responds with null', (done) ->
65 @callback = (error) ->
66 error.should.be.nil
67 done()
68 @subject()
69
70 context 'when message was nacked', ->
71 before -> @error = 'no bueno'
72
73 beforeEach (done) ->
74 @request.respondTo @destination, (message, msgHandler) =>
75 msgHandler.nack(@error)
76 .done -> done()
77
78 it 'responds with error', (done) ->
79 @callback = (error) =>
80 error.should.eql(@error)
81 done()
82 @subject()
83
84 context '#deliverWithResponseAndOptions', ->
85 beforeEach ->
86 @destination = 'response-test'
87 @subject = =>
88 @request.deliverWithResponseAndOptions @destination, @message, @options, @callback
89
90 context 'when message was acked', ->
91 before -> @message = test: 'data'
92 beforeEach (done) ->
93 @request.respondTo @destination, (message, msgHandler) =>
94 msgHandler.ack(@message)
95 .done -> done()
96
97 it 'returns response', (done) ->
98 @callback = (message) =>
99 message.should.eql(@message)
100 done()
101 @subject()
102
103 context 'when message was nacked', ->
104 before -> @error = test: 'data'
105 beforeEach (done) ->
106 @request.respondTo @destination, (message, msgHandler) =>
107 msgHandler.nack(@error)
108 .done -> done()
109
110 it 'returns error', (done) ->
111 @callback = (message) =>
112 message.error.should.eql(@error)
113 done()
114 @subject()