msgr 0.0.0 → 0.1.0

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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -1
  3. data/.travis.yml +5 -3
  4. data/Gemfile +27 -2
  5. data/Guardfile +14 -0
  6. data/README.md +56 -5
  7. data/Rakefile +30 -4
  8. data/lib/msgr/binding.rb +34 -7
  9. data/lib/msgr/client.rb +54 -24
  10. data/lib/msgr/connection.rb +64 -17
  11. data/lib/msgr/consumer.rb +28 -0
  12. data/lib/msgr/dispatcher.rb +12 -5
  13. data/lib/msgr/logging.rb +1 -1
  14. data/lib/msgr/message/acknowledge.rb +30 -0
  15. data/lib/msgr/message.rb +10 -3
  16. data/lib/msgr/pool.rb +31 -31
  17. data/lib/msgr/railtie.rb +51 -0
  18. data/lib/msgr/route.rb +19 -6
  19. data/lib/msgr/routes.rb +34 -2
  20. data/lib/msgr/version.rb +1 -1
  21. data/lib/msgr.rb +15 -7
  22. data/msgr.gemspec +2 -5
  23. data/scripts/simple_test.rb +18 -94
  24. data/spec/fixtures/msgr-routes-test-1.rb +2 -0
  25. data/spec/integration/dummy/README.rdoc +28 -0
  26. data/spec/integration/dummy/Rakefile +6 -0
  27. data/spec/integration/dummy/app/assets/images/.keep +0 -0
  28. data/spec/integration/dummy/app/assets/javascripts/application.js +13 -0
  29. data/spec/integration/dummy/app/assets/stylesheets/application.css +13 -0
  30. data/spec/integration/dummy/app/consumers/application_consumer.rb +3 -0
  31. data/spec/integration/dummy/app/consumers/test_consumer.rb +12 -0
  32. data/spec/integration/dummy/app/controllers/application_controller.rb +5 -0
  33. data/spec/integration/dummy/app/controllers/concerns/.keep +0 -0
  34. data/spec/integration/dummy/app/controllers/test_controller.rb +10 -0
  35. data/spec/integration/dummy/app/helpers/application_helper.rb +2 -0
  36. data/spec/integration/dummy/app/mailers/.keep +0 -0
  37. data/spec/integration/dummy/app/models/.keep +0 -0
  38. data/spec/integration/dummy/app/models/concerns/.keep +0 -0
  39. data/spec/integration/dummy/app/views/layouts/application.html.erb +14 -0
  40. data/spec/integration/dummy/bin/bundle +3 -0
  41. data/spec/integration/dummy/bin/rails +4 -0
  42. data/spec/integration/dummy/bin/rake +4 -0
  43. data/spec/integration/dummy/config/application.rb +24 -0
  44. data/spec/integration/dummy/config/boot.rb +5 -0
  45. data/spec/integration/dummy/config/database.yml +25 -0
  46. data/spec/integration/dummy/config/environment.rb +5 -0
  47. data/spec/integration/dummy/config/environments/development.rb +29 -0
  48. data/spec/integration/dummy/config/environments/production.rb +80 -0
  49. data/spec/integration/dummy/config/environments/test.rb +36 -0
  50. data/spec/integration/dummy/config/initializers/backtrace_silencers.rb +7 -0
  51. data/spec/integration/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  52. data/spec/integration/dummy/config/initializers/inflections.rb +16 -0
  53. data/spec/integration/dummy/config/initializers/mime_types.rb +5 -0
  54. data/spec/integration/dummy/config/initializers/secret_token.rb +12 -0
  55. data/spec/integration/dummy/config/initializers/session_store.rb +3 -0
  56. data/spec/integration/dummy/config/initializers/wrap_parameters.rb +14 -0
  57. data/spec/integration/dummy/config/locales/en.yml +23 -0
  58. data/spec/integration/dummy/config/msgr.rb +3 -0
  59. data/spec/integration/dummy/config/rabbitmq.yml +11 -0
  60. data/spec/integration/dummy/config/routes.rb +58 -0
  61. data/spec/integration/dummy/config.ru +4 -0
  62. data/spec/integration/dummy/db/test.sqlite3 +0 -0
  63. data/spec/integration/dummy/lib/assets/.keep +0 -0
  64. data/spec/integration/dummy/log/.keep +0 -0
  65. data/spec/integration/dummy/public/404.html +58 -0
  66. data/spec/integration/dummy/public/422.html +58 -0
  67. data/spec/integration/dummy/public/500.html +57 -0
  68. data/spec/integration/dummy/public/favicon.ico +0 -0
  69. data/spec/integration/msgr/railtie_spec.rb +12 -0
  70. data/spec/integration/msgr_spec.rb +12 -0
  71. data/spec/integration/spec_helper.rb +48 -0
  72. data/spec/msgr/msgr/client_spec.rb +50 -0
  73. data/spec/msgr/msgr/connection_spec.rb +51 -0
  74. data/spec/msgr/{consumer_spec.rb → msgr/consumer_spec.rb} +0 -0
  75. data/spec/msgr/msgr/pool_spec.rb +68 -0
  76. data/spec/msgr/{route_spec.rb → msgr/route_spec.rb} +0 -0
  77. data/spec/msgr/msgr/routes_spec.rb +113 -0
  78. data/spec/msgr/msgr_spec.rb +36 -0
  79. data/spec/{spec_helper.rb → msgr/spec_helper.rb} +15 -0
  80. data/spec/msgr/support/.keep +0 -0
  81. data/spec/support/setup.rb +27 -0
  82. metadata +126 -59
  83. data/spec/msgr/client_spec.rb +0 -5
  84. data/spec/msgr/routes_spec.rb +0 -59
  85. data/spec/msgr_spec.rb +0 -5
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Msgr::Connection do
4
+
5
+ describe '#rebind' do
6
+ let(:conn) { double }
7
+ let(:routes) { Msgr::Routes.new }
8
+ let(:connection) { Msgr::Connection.new conn, routes, dispatcher }
9
+
10
+ context 'with URI' do
11
+ it 'should pass URI options to bunny (I)' do
12
+ expect(Bunny).to receive(:new)
13
+ .with(pass: 'guest', user: 'guest', ssl: false, host: 'localhost', vhost: '/')
14
+
15
+ Msgr::Client.new uri: 'amqp://guest:guest@localhost/'
16
+ end
17
+
18
+ it 'should pass URI options to bunny (II)' do
19
+ expect(Bunny).to receive(:new)
20
+ .with(pass: 'msgr', user: 'abc', ssl: true, host: 'bogus.example.org', vhost: '/rabbit')
21
+
22
+ Msgr::Client.new uri: 'amqps://abc:msgr@bogus.example.org/rabbit'
23
+ end
24
+ end
25
+
26
+ context 'with options' do
27
+ it 'should pass options to bunny' do
28
+ expect(Bunny).to receive(:new)
29
+ .with(pass: 'guest', user: 'guest', ssl: false, host: 'localhost', vhost: '/')
30
+
31
+ Msgr::Client.new pass: 'guest', user: 'guest', ssl: false, host: 'localhost', vhost: '/'
32
+ end
33
+ end
34
+
35
+ context 'with URI and options' do
36
+ it 'should pass merged options to bunny' do
37
+ expect(Bunny).to receive(:new)
38
+ .with(pass: 'msgr', user: 'abc', ssl: false, host: 'localhost', vhost: '/joghurt')
39
+
40
+ Msgr::Client.new uri: 'ampq://abc@localhost', pass: 'msgr', vhost: '/joghurt'
41
+ end
42
+
43
+ it 'should pass prefer hash option' do
44
+ expect(Bunny).to receive(:new)
45
+ .with(ssl: true, host: 'a.example.org', vhost: '/', user: 'guest')
46
+
47
+ Msgr::Client.new uri: 'ampq://localhost', ssl: true, host: 'a.example.org'
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ $shutdown_test_graceful_down = false
4
+
5
+ class Runner
6
+ def call(*_) end
7
+
8
+ def shutdown_test
9
+ sleep 2
10
+ $shutdown_test_graceful_down = true
11
+ end
12
+ end
13
+
14
+ describe Msgr::Pool do
15
+ let(:pool) { Msgr::Pool.new Runner }
16
+
17
+ describe '#initialize' do
18
+ let(:opts) { {} }
19
+ let(:pool) { Msgr::Pool.new Runner, opts }
20
+
21
+ context 'pool size' do
22
+ let(:opts) { {size: 4} }
23
+ before { pool }
24
+
25
+ it 'should define number of worker actors' do
26
+ expect(pool.size).to eq 4
27
+ end
28
+ end
29
+ end
30
+
31
+ describe '#start' do
32
+ let!(:pool) { Msgr::Pool.new Runner, size: 4 }
33
+
34
+ it 'should start worker actors' do
35
+ expect { pool.start }.to change { Celluloid::Actor.all.size }.by(4)
36
+ end
37
+ end
38
+
39
+ describe '#size' do
40
+ it 'should default to number of available cores' do
41
+ expect(pool.size).to eq Celluloid.cores
42
+ end
43
+ end
44
+
45
+ describe '#dispatch' do
46
+ let!(:pool) { Msgr::Pool.new Runner, size: 4 }
47
+ before { pool.start }
48
+
49
+ it 'should dispatch message to runner' do
50
+ expect_any_instance_of(Runner).to receive(:call).within(10).seconds.once
51
+ pool.dispatch 5, 3.2, 'hello'
52
+ end
53
+ end
54
+
55
+ describe '#shutdown' do
56
+ let!(:pool) { Msgr::Pool.new Runner, size: 1 }
57
+ before do
58
+ pool.start
59
+ $shutdown_test_graceful_down = false
60
+ end
61
+
62
+ it 'should do a graceful shutdown of all worker' do
63
+ pool.dispatch :shutdown_test
64
+ pool.shutdown
65
+ expect($shutdown_test_graceful_down).to be_false
66
+ end
67
+ end
68
+ end
File without changes
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ describe Msgr::Routes do
4
+ let(:routes) { Msgr::Routes.new }
5
+
6
+ describe '#configure' do
7
+ let(:block) { Proc.new{} }
8
+
9
+ it 'should evaluate given block within instance context' do
10
+ expect(routes).to receive(:instance_eval).with { |p| p == block }
11
+
12
+ routes.configure &block
13
+ end
14
+
15
+ it 'should allow to call instance method in gven block' do
16
+ expect(routes).to receive(:test_instance_method).with(:abc)
17
+
18
+ routes.configure do
19
+ test_instance_method :abc
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '#each' do
25
+ before do
26
+ routes.configure do
27
+ route 'abc.#', to: 'test#index'
28
+ route 'edf.#', to: 'test#action'
29
+ end
30
+ end
31
+
32
+ let(:each) { routes.each }
33
+
34
+ it 'should iterate over configured routes' do
35
+ expect(each).to have(2).items
36
+
37
+ expect(each.map(&:keys)).to eq [%w(abc.#), %w(edf.#)]
38
+ expect(each.map(&:consumer)).to eq %w(TestConsumer TestConsumer)
39
+ expect(each.map(&:action)).to eq %w(index action)
40
+ end
41
+ end
42
+
43
+ describe '#route' do
44
+ let(:subject) { -> { routes.route 'routing.key', to: 'test2#index2' } }
45
+ let(:last_route) { routes.routes.last }
46
+
47
+ it 'should add a new route' do
48
+ expect { subject.call }.to change{ routes.routes.size }.from(0).to(1)
49
+ end
50
+
51
+ it 'should add given route' do
52
+ subject.call
53
+
54
+ expect(last_route.keys).to eq %w(routing.key)
55
+ expect(last_route.consumer).to eq 'Test2Consumer'
56
+ expect(last_route.action).to eq 'index2'
57
+ end
58
+
59
+ context 'with same target' do
60
+ let(:subject) do
61
+ -> do
62
+ routes.route 'routing.key', to: 'test#index'
63
+ routes.route 'another.routing.key', to: 'test#index'
64
+ end
65
+ end
66
+
67
+ it 'should only add one new route' do
68
+ expect { subject.call }.to change{ routes.routes.size }.from(0).to(1)
69
+ end
70
+
71
+ it 'should add second binding to first route' do
72
+ subject.call
73
+ expect(routes.routes.first.keys).to have(2).items
74
+ expect(routes.routes.first.keys).to eq %w(routing.key another.routing.key)
75
+ end
76
+ end
77
+ end
78
+
79
+ describe '#files' do
80
+ it 'should allow to add route paths' do
81
+ routes.files << 'abc.rb'
82
+ routes.files += %w(cde.rb edf.rb)
83
+
84
+ expect(routes.files).to eq %w(abc.rb cde.rb edf.rb)
85
+ end
86
+ end
87
+
88
+ describe 'reload' do
89
+ before { File.stub(:exists?).and_return(true) }
90
+
91
+ it 'should trigger load for all files' do
92
+ expect(routes).to receive(:load).with('cde.rb').ordered
93
+ expect(routes).to receive(:load).with('edf.rb').ordered
94
+ routes.files += %w(cde.rb edf.rb)
95
+ routes.reload
96
+ end
97
+
98
+ it 'should clear old routes before reloading' do
99
+ routes.route 'abc', to: 'abc#test'
100
+ routes.reload
101
+ expect(routes.each).to have(0).items
102
+ end
103
+ end
104
+
105
+ describe 'load' do
106
+ let(:file) { 'spec/fixtures/msgr-routes-test-1.rb' }
107
+
108
+ it 'should eval given file within routes context' do
109
+ expect(routes).to receive(:route).with('abc.#', to: 'test#index')
110
+ routes.load file
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ class TestConsumer < Msgr::Consumer
4
+ def index
5
+ puts "<<< #{payload}"
6
+ end
7
+ end
8
+
9
+ describe Msgr do
10
+ before do
11
+ Msgr.logger = nil;
12
+ Msgr.logger.level = Logger::Severity::DEBUG if Msgr.logger
13
+ end
14
+
15
+ let(:client) { Msgr::Client.new size: 1, prefix: SecureRandom.hex(32) }
16
+
17
+ before do
18
+ client.routes.configure do
19
+ route '#', to: 'test#index'
20
+ end
21
+
22
+ client.start
23
+ end
24
+
25
+ after do
26
+ client.stop timeout: 10, delete: true, wait_empty: 10
27
+ end
28
+
29
+ it 'should dispatch published methods to consumer' do
30
+ expect_any_instance_of(TestConsumer).to receive(:index).within(10).seconds.and_call_original
31
+
32
+ client.publish 'routing.key', 'Payload'
33
+
34
+ sleep 10
35
+ end
36
+ end
@@ -1,3 +1,7 @@
1
+ # Bundler setup
2
+ require 'bundler'
3
+ Bundler.setup :default, :test
4
+
1
5
  # Coverage
2
6
  require 'coveralls'
3
7
  Coveralls.wear! do
@@ -5,6 +9,7 @@ Coveralls.wear! do
5
9
  end
6
10
 
7
11
  require 'rspec/autorun'
12
+ require 'rspec/message/within'
8
13
  require 'msgr'
9
14
 
10
15
  Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
@@ -15,4 +20,14 @@ RSpec.configure do |config|
15
20
  # Only allow expect syntax
16
21
  c.syntax = :expect
17
22
  end
23
+
24
+ config.before do
25
+ Celluloid.logger = nil
26
+
27
+ Celluloid.shutdown
28
+ Celluloid.boot
29
+
30
+ Celluloid.logger = nil
31
+ Msgr.logger = false
32
+ end
18
33
  end
File without changes
@@ -0,0 +1,27 @@
1
+ require 'bundler'
2
+
3
+ # Somewhere between
4
+ # `ruby -w -W2 -S rspec ...`
5
+ # and the rspec executable `bundle/setup` is required or
6
+ # `Bundler.setup` without groups called. This will let Bundler
7
+ # load ALL gems from ALL groups. This results in leaking
8
+ # gems only for rails integration tests into msgr testing
9
+ # environment.
10
+ #
11
+ # This file will be required by ruby on the commandline before
12
+ # everything else can kick in. The code snippet below will
13
+ # patch bundler to just ignore `setup` calls without
14
+ # specified groups. All test helper will explicit call
15
+ # `Bundler.setup` with required test groups.
16
+
17
+ module Bundler
18
+ class << self
19
+ alias :old_setup :setup
20
+ def setup(*groups)
21
+ old_setup(*groups) unless groups.empty?
22
+ end
23
+ end
24
+ end
25
+
26
+ # Only load default group
27
+ Bundler.setup :default
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msgr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-15 00:00:00.000000000 Z
11
+ date: 2013-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -66,49 +66,7 @@ dependencies:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '>='
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: coveralls
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- description: ''
69
+ description: 'Msgr: Rails-like Messaging Framework'
112
70
  email:
113
71
  - jg@altimos.de
114
72
  executables: []
@@ -118,6 +76,7 @@ files:
118
76
  - .gitignore
119
77
  - .travis.yml
120
78
  - Gemfile
79
+ - Guardfile
121
80
  - LICENSE.txt
122
81
  - README.md
123
82
  - Rakefile
@@ -127,22 +86,77 @@ files:
127
86
  - lib/msgr/binding.rb
128
87
  - lib/msgr/client.rb
129
88
  - lib/msgr/connection.rb
89
+ - lib/msgr/consumer.rb
130
90
  - lib/msgr/dispatcher.rb
131
91
  - lib/msgr/errors.rb
132
92
  - lib/msgr/logging.rb
133
93
  - lib/msgr/message.rb
94
+ - lib/msgr/message/acknowledge.rb
134
95
  - lib/msgr/pool.rb
96
+ - lib/msgr/railtie.rb
135
97
  - lib/msgr/route.rb
136
98
  - lib/msgr/routes.rb
137
99
  - lib/msgr/version.rb
138
100
  - msgr.gemspec
139
101
  - scripts/simple_test.rb
140
- - spec/msgr/client_spec.rb
141
- - spec/msgr/consumer_spec.rb
142
- - spec/msgr/route_spec.rb
143
- - spec/msgr/routes_spec.rb
144
- - spec/msgr_spec.rb
145
- - spec/spec_helper.rb
102
+ - spec/fixtures/msgr-routes-test-1.rb
103
+ - spec/integration/dummy/README.rdoc
104
+ - spec/integration/dummy/Rakefile
105
+ - spec/integration/dummy/app/assets/images/.keep
106
+ - spec/integration/dummy/app/assets/javascripts/application.js
107
+ - spec/integration/dummy/app/assets/stylesheets/application.css
108
+ - spec/integration/dummy/app/consumers/application_consumer.rb
109
+ - spec/integration/dummy/app/consumers/test_consumer.rb
110
+ - spec/integration/dummy/app/controllers/application_controller.rb
111
+ - spec/integration/dummy/app/controllers/concerns/.keep
112
+ - spec/integration/dummy/app/controllers/test_controller.rb
113
+ - spec/integration/dummy/app/helpers/application_helper.rb
114
+ - spec/integration/dummy/app/mailers/.keep
115
+ - spec/integration/dummy/app/models/.keep
116
+ - spec/integration/dummy/app/models/concerns/.keep
117
+ - spec/integration/dummy/app/views/layouts/application.html.erb
118
+ - spec/integration/dummy/bin/bundle
119
+ - spec/integration/dummy/bin/rails
120
+ - spec/integration/dummy/bin/rake
121
+ - spec/integration/dummy/config.ru
122
+ - spec/integration/dummy/config/application.rb
123
+ - spec/integration/dummy/config/boot.rb
124
+ - spec/integration/dummy/config/database.yml
125
+ - spec/integration/dummy/config/environment.rb
126
+ - spec/integration/dummy/config/environments/development.rb
127
+ - spec/integration/dummy/config/environments/production.rb
128
+ - spec/integration/dummy/config/environments/test.rb
129
+ - spec/integration/dummy/config/initializers/backtrace_silencers.rb
130
+ - spec/integration/dummy/config/initializers/filter_parameter_logging.rb
131
+ - spec/integration/dummy/config/initializers/inflections.rb
132
+ - spec/integration/dummy/config/initializers/mime_types.rb
133
+ - spec/integration/dummy/config/initializers/secret_token.rb
134
+ - spec/integration/dummy/config/initializers/session_store.rb
135
+ - spec/integration/dummy/config/initializers/wrap_parameters.rb
136
+ - spec/integration/dummy/config/locales/en.yml
137
+ - spec/integration/dummy/config/msgr.rb
138
+ - spec/integration/dummy/config/rabbitmq.yml
139
+ - spec/integration/dummy/config/routes.rb
140
+ - spec/integration/dummy/db/test.sqlite3
141
+ - spec/integration/dummy/lib/assets/.keep
142
+ - spec/integration/dummy/log/.keep
143
+ - spec/integration/dummy/public/404.html
144
+ - spec/integration/dummy/public/422.html
145
+ - spec/integration/dummy/public/500.html
146
+ - spec/integration/dummy/public/favicon.ico
147
+ - spec/integration/msgr/railtie_spec.rb
148
+ - spec/integration/msgr_spec.rb
149
+ - spec/integration/spec_helper.rb
150
+ - spec/msgr/msgr/client_spec.rb
151
+ - spec/msgr/msgr/connection_spec.rb
152
+ - spec/msgr/msgr/consumer_spec.rb
153
+ - spec/msgr/msgr/pool_spec.rb
154
+ - spec/msgr/msgr/route_spec.rb
155
+ - spec/msgr/msgr/routes_spec.rb
156
+ - spec/msgr/msgr_spec.rb
157
+ - spec/msgr/spec_helper.rb
158
+ - spec/msgr/support/.keep
159
+ - spec/support/setup.rb
146
160
  homepage: https://github.com/jgraichen/msgr
147
161
  licenses:
148
162
  - MIT
@@ -163,14 +177,67 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
177
  version: '0'
164
178
  requirements: []
165
179
  rubyforge_project:
166
- rubygems_version: 2.0.6
180
+ rubygems_version: 2.0.3
167
181
  signing_key:
168
182
  specification_version: 4
169
- summary: ''
183
+ summary: 'Msgr: Rails-like Messaging Framework'
170
184
  test_files:
171
- - spec/msgr/client_spec.rb
172
- - spec/msgr/consumer_spec.rb
173
- - spec/msgr/route_spec.rb
174
- - spec/msgr/routes_spec.rb
175
- - spec/msgr_spec.rb
176
- - spec/spec_helper.rb
185
+ - spec/fixtures/msgr-routes-test-1.rb
186
+ - spec/integration/dummy/README.rdoc
187
+ - spec/integration/dummy/Rakefile
188
+ - spec/integration/dummy/app/assets/images/.keep
189
+ - spec/integration/dummy/app/assets/javascripts/application.js
190
+ - spec/integration/dummy/app/assets/stylesheets/application.css
191
+ - spec/integration/dummy/app/consumers/application_consumer.rb
192
+ - spec/integration/dummy/app/consumers/test_consumer.rb
193
+ - spec/integration/dummy/app/controllers/application_controller.rb
194
+ - spec/integration/dummy/app/controllers/concerns/.keep
195
+ - spec/integration/dummy/app/controllers/test_controller.rb
196
+ - spec/integration/dummy/app/helpers/application_helper.rb
197
+ - spec/integration/dummy/app/mailers/.keep
198
+ - spec/integration/dummy/app/models/.keep
199
+ - spec/integration/dummy/app/models/concerns/.keep
200
+ - spec/integration/dummy/app/views/layouts/application.html.erb
201
+ - spec/integration/dummy/bin/bundle
202
+ - spec/integration/dummy/bin/rails
203
+ - spec/integration/dummy/bin/rake
204
+ - spec/integration/dummy/config.ru
205
+ - spec/integration/dummy/config/application.rb
206
+ - spec/integration/dummy/config/boot.rb
207
+ - spec/integration/dummy/config/database.yml
208
+ - spec/integration/dummy/config/environment.rb
209
+ - spec/integration/dummy/config/environments/development.rb
210
+ - spec/integration/dummy/config/environments/production.rb
211
+ - spec/integration/dummy/config/environments/test.rb
212
+ - spec/integration/dummy/config/initializers/backtrace_silencers.rb
213
+ - spec/integration/dummy/config/initializers/filter_parameter_logging.rb
214
+ - spec/integration/dummy/config/initializers/inflections.rb
215
+ - spec/integration/dummy/config/initializers/mime_types.rb
216
+ - spec/integration/dummy/config/initializers/secret_token.rb
217
+ - spec/integration/dummy/config/initializers/session_store.rb
218
+ - spec/integration/dummy/config/initializers/wrap_parameters.rb
219
+ - spec/integration/dummy/config/locales/en.yml
220
+ - spec/integration/dummy/config/msgr.rb
221
+ - spec/integration/dummy/config/rabbitmq.yml
222
+ - spec/integration/dummy/config/routes.rb
223
+ - spec/integration/dummy/db/test.sqlite3
224
+ - spec/integration/dummy/lib/assets/.keep
225
+ - spec/integration/dummy/log/.keep
226
+ - spec/integration/dummy/public/404.html
227
+ - spec/integration/dummy/public/422.html
228
+ - spec/integration/dummy/public/500.html
229
+ - spec/integration/dummy/public/favicon.ico
230
+ - spec/integration/msgr/railtie_spec.rb
231
+ - spec/integration/msgr_spec.rb
232
+ - spec/integration/spec_helper.rb
233
+ - spec/msgr/msgr/client_spec.rb
234
+ - spec/msgr/msgr/connection_spec.rb
235
+ - spec/msgr/msgr/consumer_spec.rb
236
+ - spec/msgr/msgr/pool_spec.rb
237
+ - spec/msgr/msgr/route_spec.rb
238
+ - spec/msgr/msgr/routes_spec.rb
239
+ - spec/msgr/msgr_spec.rb
240
+ - spec/msgr/spec_helper.rb
241
+ - spec/msgr/support/.keep
242
+ - spec/support/setup.rb
243
+ has_rdoc:
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Msgr::Client do
4
-
5
- end
@@ -1,59 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Msgr::Routes do
4
- let(:routes) { Msgr::Routes.new }
5
-
6
- describe '#configure' do
7
- let(:block) { Proc.new{} }
8
-
9
- it 'should evaluate given block within instance context' do
10
- expect(routes).to receive(:instance_eval).with { |p| p == block }
11
-
12
- routes.configure &block
13
- end
14
-
15
- it 'should allow to call instance method in gven block' do
16
- expect(routes).to receive(:test_instance_method).with(:abc)
17
-
18
- routes.configure do
19
- test_instance_method :abc
20
- end
21
- end
22
- end
23
-
24
- describe '#each' do
25
- before do
26
- routes.configure do
27
- route 'abc.#', to: 'test#index'
28
- route 'edf.#', to: 'test#index'
29
- end
30
- end
31
-
32
- let(:each) { routes.each }
33
-
34
- it 'should iterate over configured routes' do
35
- expect(each).to have(2).items
36
-
37
- expect(each.map(&:routing_key)).to be == %w(abc.# edf.#)
38
- expect(each.map(&:consumer)).to be == %w(TestConsumer TestConsumer)
39
- expect(each.map(&:action)).to be == %w(index index)
40
- end
41
- end
42
-
43
- describe '#route' do
44
- let(:subject) { -> { routes.route 'routing.key', to: 'test2#index2' } }
45
- let(:last_route) { routes.routes.last }
46
-
47
- it 'should add a new route' do
48
- expect { subject.call }.to change{ routes.routes.size }.from(0).to(1)
49
- end
50
-
51
- it 'should add given route' do
52
- subject.call
53
-
54
- expect(last_route.routing_key).to eq 'routing.key'
55
- expect(last_route.consumer).to eq 'Test2Consumer'
56
- expect(last_route.action).to eq 'index2'
57
- end
58
- end
59
- end
data/spec/msgr_spec.rb DELETED
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Msgr do
4
-
5
- end