chickadee 1.1.2 → 1.1.3

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: e6bc891123601aa3aef8c11b049601ff55c86e8b
4
- data.tar.gz: d4b92e4074b05681f496b7e53228424be2f97d0e
3
+ metadata.gz: 6454dba340dc5b38f51086c1156a2476c0eb1d43
4
+ data.tar.gz: 6f38fb7fb6819284b47d1331a172470dc47654a5
5
5
  SHA512:
6
- metadata.gz: 93b379e977d300b5a37557cc4f95afc4c84f51f8dd04b5b7ccd375f0154a68738bf708354eae16b62a30097ef6ca946555c17a3048b05b9f79259015c229175b
7
- data.tar.gz: 638f1d5ad8029451b0372e1d4052facdde8cc4e0fa2195d9ac4fb19a4f996491c643c8f79c42c085f014bdc688f10c17eb0d0f5983cc02cf262f1ab3593565e6
6
+ metadata.gz: bb440f384f0151d7fc2f9e75d707d70a85db83a981330e536458cad7cf3b19bfcf6c698fcff5e9070704566ea844921bf9b52a13a4be967dd9fcbbaf811f7cc5
7
+ data.tar.gz: da8297ba59d695926bcfe2b518f9f6bdcade6ab80025856e313471190b5627ab25fb012b96b81a4638d0df59458893a82ab3854abc22feaaa4d349648601e049
@@ -19,12 +19,18 @@ module Chickadee
19
19
  @container.register(*args)
20
20
  end
21
21
 
22
- def map(request_key, *handlers)
23
- send("map_#{request_key.type}", request_key, *handlers)
22
+ def map(request_class, *handlers)
23
+ return map_command(request_class, *handlers) if request_class.type.command?
24
+ return map_query(request_class, *handlers) if request_class.type.query?
25
+ return map_event(request_class, *handlers) if request_class.type.event?
26
+ raise(DispatcherError, "Unrecognized request type: #{request_class}")
24
27
  end
25
28
 
26
29
  def dispatch(request)
27
- send("dispatch_#{request.class.type}", request)
30
+ return dispatch_command(request) if request.class.type.command?
31
+ return dispatch_query(request) if request.class.type.query?
32
+ return dispatch_event(request) if request.class.type.event?
33
+ raise(DispatcherError, "Unrecognized request type: #{request.class}")
28
34
  end
29
35
 
30
36
  private
@@ -1,4 +1,7 @@
1
1
  module Chickadee
2
- class Command < Request
2
+ class Command
3
+ def self.type
4
+ RequestType.new(:command)
5
+ end
3
6
  end
4
7
  end
@@ -1,4 +1,7 @@
1
1
  module Chickadee
2
- class Event < Request
2
+ class Event
3
+ def self.type
4
+ RequestType.new(:event)
5
+ end
3
6
  end
4
7
  end
@@ -1,4 +1,7 @@
1
1
  module Chickadee
2
- class Query < Request
2
+ class Query
3
+ def self.type
4
+ RequestType.new(:query)
5
+ end
3
6
  end
4
7
  end
@@ -0,0 +1,23 @@
1
+ module Chickadee
2
+ class RequestType
3
+ def initialize(type)
4
+ @type = type
5
+ end
6
+
7
+ def query?
8
+ @type == :query
9
+ end
10
+
11
+ def command?
12
+ @type == :command
13
+ end
14
+
15
+ def event?
16
+ @type == :event
17
+ end
18
+
19
+ def match?(t)
20
+ t == @type
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module Chickadee
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.3"
3
3
  end
data/lib/chickadee.rb CHANGED
@@ -3,7 +3,7 @@ require 'chickadee/version'
3
3
  require 'chickadee/exceptions'
4
4
  require 'chickadee/container'
5
5
  require 'chickadee/handler'
6
- require 'chickadee/requests/request'
6
+ require 'chickadee/requests/request_type'
7
7
  require 'chickadee/requests/command'
8
8
  require 'chickadee/requests/query'
9
9
  require 'chickadee/requests/event'
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'chickadee'
3
+
4
+ describe Chickadee::Dispatcher do
5
+ it 'can dispatch a command' do
6
+ handler = stub(:handle => 'handler response')
7
+ command = Chickadee::Command.new
8
+ dispatcher = new_dispatcher
9
+
10
+ dispatcher.register(:handler, handler, :as => :instance)
11
+ dispatcher.map(Chickadee::Command, :handler)
12
+
13
+ handler.expects(:handle).once
14
+ dispatcher.dispatch(command).must_be_nil
15
+ end
16
+
17
+ it 'can dispatch a query' do
18
+ handler = stub(:handle => 'handler response')
19
+ query = Chickadee::Query.new
20
+ dispatcher = new_dispatcher
21
+
22
+ dispatcher.register(:handler, handler, :as => :instance)
23
+ dispatcher.map(Chickadee::Query, :handler)
24
+ dispatcher.dispatch(query).must_equal('handler response')
25
+ end
26
+
27
+ it 'can dispatch an event' do
28
+ handler = stub(:handle => 'handler response')
29
+ event = Chickadee::Event.new
30
+ dispatcher = new_dispatcher
31
+
32
+ dispatcher.register(:handler, handler, :as => :instance)
33
+ dispatcher.map(Chickadee::Event, :handler)
34
+
35
+ handler.expects(:handle).once
36
+ dispatcher.dispatch(event).must_be_nil
37
+ end
38
+
39
+ def new_dispatcher
40
+ Chickadee::Dispatcher.new
41
+ end
42
+ end
@@ -2,11 +2,8 @@ require 'spec_helper'
2
2
  require 'chickadee'
3
3
 
4
4
  describe Chickadee::Command do
5
- it { new_query.query?.must_equal(false) }
6
- it { new_query.command?.must_equal(true) }
7
- it { new_query.event?.must_equal(false) }
8
-
9
- def new_query
10
- Chickadee::Command.new
11
- end
5
+ it { Chickadee::Command.type.query?.must_equal(false) }
6
+ it { Chickadee::Command.type.command?.must_equal(true) }
7
+ it { Chickadee::Command.type.event?.must_equal(false) }
8
+ it { Chickadee::Command.type.match?(:command).must_equal(true) }
12
9
  end
@@ -2,11 +2,8 @@ require 'spec_helper'
2
2
  require 'chickadee'
3
3
 
4
4
  describe Chickadee::Event do
5
- it { new_query.query?.must_equal(false) }
6
- it { new_query.command?.must_equal(false) }
7
- it { new_query.event?.must_equal(true) }
8
-
9
- def new_query
10
- Chickadee::Event.new
11
- end
5
+ it { Chickadee::Event.type.query?.must_equal(false) }
6
+ it { Chickadee::Event.type.command?.must_equal(false) }
7
+ it { Chickadee::Event.type.event?.must_equal(true) }
8
+ it { Chickadee::Event.type.match?(:event).must_equal(true) }
12
9
  end
@@ -2,11 +2,8 @@ require 'spec_helper'
2
2
  require 'chickadee'
3
3
 
4
4
  describe Chickadee::Query do
5
- it { new_query.query?.must_equal(true) }
6
- it { new_query.command?.must_equal(false) }
7
- it { new_query.event?.must_equal(false) }
8
-
9
- def new_query
10
- Chickadee::Query.new
11
- end
5
+ it { Chickadee::Query.type.query?.must_equal(true) }
6
+ it { Chickadee::Query.type.command?.must_equal(false) }
7
+ it { Chickadee::Query.type.event?.must_equal(false) }
8
+ it { Chickadee::Query.type.match?(:query).must_equal(true) }
12
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chickadee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Lott
@@ -94,8 +94,9 @@ files:
94
94
  - lib/chickadee/requests/command.rb
95
95
  - lib/chickadee/requests/event.rb
96
96
  - lib/chickadee/requests/query.rb
97
- - lib/chickadee/requests/request.rb
97
+ - lib/chickadee/requests/request_type.rb
98
98
  - lib/chickadee/version.rb
99
+ - spec/dispatcher_spec.rb
99
100
  - spec/dispatchers/command_dispatcher_spec.rb
100
101
  - spec/dispatchers/event_dispatcher_spec.rb
101
102
  - spec/dispatchers/handler_chain_struct_spec.rb
@@ -130,6 +131,7 @@ signing_key:
130
131
  specification_version: 4
131
132
  summary: Lightweight domain driven design library
132
133
  test_files:
134
+ - spec/dispatcher_spec.rb
133
135
  - spec/dispatchers/command_dispatcher_spec.rb
134
136
  - spec/dispatchers/event_dispatcher_spec.rb
135
137
  - spec/dispatchers/handler_chain_struct_spec.rb
@@ -1,21 +0,0 @@
1
- module Chickadee
2
- class Request
3
- def command?
4
- request_type == :command
5
- end
6
-
7
- def query?
8
- request_type == :query
9
- end
10
-
11
- def event?
12
- request_type == :event
13
- end
14
-
15
- private
16
-
17
- def request_type
18
- self.class.name.split('::').last.downcase.to_sym
19
- end
20
- end
21
- end