UNPKG

3.45 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
47 before ->
48 @destination = 'ack-test'
49 @subject = (callback) =>
50 @request.deliverWithAckAndOptions @destination, @message, @options, callback
51
52 it 'returns error if message was neither acked nor nacked', (done) ->
53 @options = timeout: 0.01
54 callback = (error) =>
55 error.should.eql("Timeout waiting for response")
56 done()
57 @subject(callback)
58
59 context 'when message was acked', ->
60 beforeEach (done) ->
61 @request.respondTo @destination, (message, msgHandler) ->
62 msgHandler.ack()
63 .done -> done()
64
65 it 'responds with null', (done) ->
66 callback = (error) ->
67 error.should.be.nil
68 done()
69 @subject(callback)
70
71 context 'when message was nacked', ->
72 before -> @error = 'no bueno'
73
74 beforeEach (done) ->
75 @request.respondTo @destination, (message, msgHandler) =>
76 msgHandler.nack(@error)
77 .done -> done()
78
79 it 'responds with error', (done) ->
80 callback = (error) =>
81 error.should.eql(@error)
82 done()
83 @subject(callback)
84
85 context '#deliverWithResponseAndOptions', ->
86 beforeEach ->
87 @destination = 'response-test'
88 @subject = (callback) =>
89 @request.deliverWithResponseAndOptions @destination, @message, @options, callback
90
91 context 'when message was acked', ->
92 before -> @message = test: 'data'
93 beforeEach (done) ->
94 @request.respondTo @destination, (message, msgHandler) =>
95 msgHandler.ack(@message)
96 .done -> done()
97
98 it 'returns response', (done) ->
99 callback = (message) =>
100 message.should.eql(@message)
101 done()
102 @subject(callback)
103
104 context 'when message was nacked', ->
105 before -> @error = test: 'data'
106 beforeEach (done) ->
107 @request.respondTo @destination, (message, msgHandler) =>
108 msgHandler.nack(@error)
109 .done -> done()
110
111 it 'returns error', (done) ->
112 callback = (message) =>
113 message.error.should.eql(@error)
114 done()
115 @subject(callback)