fluffle 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5dd8399b990619343ffdb773fa49fe7db22e6efc
4
- data.tar.gz: 2ac808a2fd535cc42f94b717d802c89907dd1cbe
3
+ metadata.gz: '038ddf285b4ce9d146162683b41abd91a89f9295'
4
+ data.tar.gz: cc7c21fe760f9f7337a3b05ecc41896964f9aa86
5
5
  SHA512:
6
- metadata.gz: d362ac33b12f4ea96b7d2a93c8aa65da179a76cfc0dce36353491e809a79c43483ec13144de513d9835d0b7bbfbd99907667dc196dc9852a291099df235c9466
7
- data.tar.gz: d0bb08d9540dcd7643da0fb800d104519f9f91e50e8b8bc660047a9abb79d94ad6c7430955e3ebd5c32b9935fb68d105123b6b804e3b7c8cacfdb26ce8f1beaa
6
+ metadata.gz: fe9589b93d03cb89f2de6aa09577fafc954fadd305c7de68637493ae5d8191a2f021369a84a1ffed4bba6bcce4885e593f4b72f635e516bfd5c2d8fc3123f8a3
7
+ data.tar.gz: '01391ea97e789e91d373762f483d4c10592fdfab8da4aa51a46985b950db8c708bf5127f43abd6f1fc242bfb8a5e802fa1608d06871d95ddbb185f68b14489f4'
data/.travis.yml CHANGED
@@ -3,9 +3,10 @@ language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
5
  - 2.1.10
6
- - 2.2.5
7
- - 2.3.0
6
+ - 2.2.6
8
7
  - 2.3.1
8
+ - 2.3.2
9
+ - 2.3.3
9
10
  services:
10
11
  - rabbitmq
11
12
 
@@ -17,6 +17,10 @@ module Fluffle
17
17
  class ConfirmTimeoutError < TimeoutError
18
18
  end
19
19
 
20
+ # Raised if it received a nack from the broker
21
+ class NackError < StandardError
22
+ end
23
+
20
24
  # Raised if it received a return from the server
21
25
  class ReturnError < StandardError
22
26
  end
@@ -1,3 +1,3 @@
1
1
  module Fluffle
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fluffle::Confirmer do
4
+ class StubChannel
5
+ attr_accessor :confirm_handler, :tag
6
+
7
+ def initialize
8
+ @tag = 1
9
+ end
10
+
11
+ def confirm_select(block = nil)
12
+ @confirm_handler = block
13
+ end
14
+
15
+ def next_publish_seq_no
16
+ @tag
17
+ end
18
+ end
19
+
20
+ before do
21
+ @channel = StubChannel.new
22
+ @confirmer = Fluffle::Confirmer.new channel: @channel
23
+ end
24
+
25
+ describe '#with_confirmation' do
26
+ let(:default_timeout) { 5 }
27
+
28
+ before do
29
+ @confirmer.confirm_select
30
+ end
31
+
32
+ it 'raises if it times out' do
33
+ expect {
34
+ @confirmer.with_confirmation(timeout: 0.001) { sleep 0.002 }
35
+ }.to raise_error(Fluffle::Errors::ConfirmTimeoutError)
36
+ end
37
+
38
+ it 'raises if it receives a nack' do
39
+ send_nack = -> {
40
+ multiple = false
41
+ nack = true
42
+ @channel.confirm_handler.call @channel.tag, multiple, nack
43
+ }
44
+
45
+ expect {
46
+ @confirmer.with_confirmation(timeout: default_timeout) {
47
+ send_nack.call
48
+ }
49
+ }.to raise_error(Fluffle::Errors::NackError)
50
+ end
51
+
52
+ it 'returns the result if it receives an ack' do
53
+ send_confirm = -> {
54
+ multiple = false
55
+ nack = false
56
+ @channel.confirm_handler.call @channel.tag, multiple, nack
57
+ }
58
+
59
+ result = double 'result'
60
+
61
+ expect(
62
+ @confirmer.with_confirmation(timeout: default_timeout) {
63
+ Thread.new {
64
+ sleep 0.1
65
+ send_confirm.call
66
+ }
67
+
68
+ sleep 0.2
69
+ result
70
+ }
71
+ ).to eq result
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fluffle::MiddlewareStack do
4
+ describe '#call' do
5
+ it 'calls the middleware in the correct order' do
6
+ order = []
7
+
8
+ middleware1 = ->(parent) {
9
+ order.push :pre1
10
+ result = parent.call
11
+ order.push :post1
12
+ result
13
+ }
14
+
15
+ middleware2 = ->(parent) {
16
+ order.push :pre2
17
+ result = parent.call
18
+ order.push :post2
19
+ result
20
+ }
21
+
22
+ result = double 'result'
23
+ block = -> {
24
+ order.push :block
25
+ result
26
+ }
27
+
28
+ subject.push middleware1
29
+ subject.push middleware2
30
+ expect(subject.call(&block)).to eq result
31
+ expect(order).to eq [
32
+ :pre1,
33
+ :pre2,
34
+ :block,
35
+ :post2,
36
+ :post1,
37
+ ]
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluffle
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dirk Gadsden
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-20 00:00:00.000000000 Z
11
+ date: 2016-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -141,8 +141,10 @@ files:
141
141
  - lib/fluffle/testing.rb
142
142
  - lib/fluffle/version.rb
143
143
  - spec/client_spec.rb
144
+ - spec/confirmer_spec.rb
144
145
  - spec/handlers/delegator_spec.rb
145
146
  - spec/handlers/dispatcher_spec.rb
147
+ - spec/middleware_stack_spec.rb
146
148
  - spec/server_spec.rb
147
149
  - spec/spec_helper.rb
148
150
  homepage: https://github.com/Everlane/fluffle