rcqrs 0.1.0 → 0.3.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.
- checksums.yaml +15 -0
- data/lib/rcqrs/base_event.rb +10 -5
- data/lib/rcqrs/event_handler.rb +10 -2
- data/lib/rcqrs/version.rb +1 -1
- data/spec/base_event_spec.rb +12 -0
- data/spec/command_handler_spec.rb +3 -3
- data/spec/eventhandler_spec.rb +18 -3
- data/spec/test_command_handler.rb +2 -2
- metadata +29 -19
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ODM1NDgzMDIxOTE2NzMyOTMyNTViZDgyZmFkY2U0ZTU1YzM5Zjg3NA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YTc2MWUzOWUxM2VlMTEwMTAwMmE2Njc0YzYwMjllNDhjNzVlM2I2OQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NWM5MzJhYzRkNzYxNmFkMjViNTcyOTA3YzI3NjY3ZjU0YTJkYmNkNzhkNmM0
|
10
|
+
ZGY4MDc1MDEwMzZjOTA4ZTBiZDIzMzZiNDQ1NjI0NzJkY2M3MzRlNmE2MzRh
|
11
|
+
NjhmZDhhY2NiZWVhODcyMjQyMTQ4OWU1YzZiODc4YzU2ZDgxNjQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YWNlYmZkOWRjMDg3YjA2ZmJhZjFhMDRhOTdmZjVlNDE2ZDc2NDc4MDUzOTUy
|
14
|
+
MTUzMzQyNDQyZGU5MmUzNWU4ZGM3NGU3MGY4Zjg1OWU3YWRjN2RlNjQ2ZjU1
|
15
|
+
NDk1ZjViZWRjODJmZjVhZTNhMzRhMGRmMjliNmIxZGE3ODlkMjc=
|
data/lib/rcqrs/base_event.rb
CHANGED
@@ -12,14 +12,19 @@ module Rcqrs
|
|
12
12
|
@data = data
|
13
13
|
end
|
14
14
|
|
15
|
-
def self.property(
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
def self.property(*property_names)
|
16
|
+
property_names.each do |name|
|
17
|
+
raise "data and published_at are not allowed property names" if (["data","published_at"].include? name.to_s)
|
18
|
+
end
|
19
|
+
property_names.each do |property_name|
|
20
|
+
@properties = Array.new unless @properties
|
21
|
+
@properties << property_name.to_s
|
22
|
+
attr_reader property_name
|
23
|
+
end
|
20
24
|
end
|
21
25
|
|
22
26
|
def self.has_property(property)
|
27
|
+
return false unless @properties
|
23
28
|
@properties.include?(property.to_s)
|
24
29
|
end
|
25
30
|
|
data/lib/rcqrs/event_handler.rb
CHANGED
@@ -17,8 +17,16 @@ module Rcqrs
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def handle aggregate_id, event
|
20
|
-
|
21
|
-
|
20
|
+
methodname = handler_method_name(event)
|
21
|
+
begin
|
22
|
+
send(methodname, aggregate_id,event)
|
23
|
+
rescue Exception => e
|
24
|
+
on_exception e
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def on_exception exception
|
29
|
+
puts exception
|
22
30
|
end
|
23
31
|
|
24
32
|
def handler_method_name(event)
|
data/lib/rcqrs/version.rb
CHANGED
data/spec/base_event_spec.rb
CHANGED
@@ -22,5 +22,17 @@ describe Rcqrs::BaseEvent do
|
|
22
22
|
it "should not allow to define allready used methods as properties" do
|
23
23
|
lambda {class TestEvent; property :data ;end}.should raise_error
|
24
24
|
end
|
25
|
+
|
26
|
+
it "should work with no properties defined" do
|
27
|
+
class SomeOtherTestEvent < Rcqrs::BaseEvent; end
|
28
|
+
lambda {SomeOtherTestEvent.new(name:"Jimbo")}.should raise_error "Property not defined"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should allow to define multiple properties in one line" do
|
32
|
+
class TestEvent; property :weight, :size; end
|
33
|
+
jim = TestEvent.new(name:"jim", weight: 23, size: 185)
|
34
|
+
jim.weight.should be 23
|
35
|
+
jim.size.should be 185
|
36
|
+
end
|
25
37
|
end
|
26
38
|
|
@@ -12,11 +12,11 @@ describe Rcqrs::CommandSource do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should raise NameError when commandhandler not found" do
|
15
|
-
expect {@commandSource.execute NonExistingCommand.new("Param")}.to raise_error(Rcqrs::CommandHandlerNotFoundError)
|
15
|
+
expect {@commandSource.execute NonExistingCommand.new(figo: "Param")}.to raise_error(Rcqrs::CommandHandlerNotFoundError)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should raise an Exception if the CommandHandler does not inherit from BaseCommandHandler" do
|
19
|
-
expect {@commandSource.execute DoesNotInheritFromBase.new
|
19
|
+
expect {@commandSource.execute DoesNotInheritFromBase.new}.to raise_error(Rcqrs::CommandHandlerDoesNotInheritFromBaseError)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should provide the CommandHandler a repository" do
|
@@ -37,4 +37,4 @@ end
|
|
37
37
|
|
38
38
|
class DoesNotInheritFromBaseHandler
|
39
39
|
|
40
|
-
end
|
40
|
+
end
|
data/spec/eventhandler_spec.rb
CHANGED
@@ -34,6 +34,12 @@ describe Rcqrs::EventHandler do
|
|
34
34
|
Rcqrs::EventConfigurationBase.register_all_at bus
|
35
35
|
bus.config.should == {TestEventModule::ClassMacroEvent => DummyEventhandler}
|
36
36
|
end
|
37
|
+
|
38
|
+
it "handles errors which may occure during event processing" do
|
39
|
+
@handler.raise_error = true
|
40
|
+
@handler.handle("aggregate_id",@event)
|
41
|
+
@handler.exception.message.should == "Error occured"
|
42
|
+
end
|
37
43
|
|
38
44
|
end
|
39
45
|
|
@@ -54,14 +60,23 @@ class DummyEventhandler
|
|
54
60
|
include Rcqrs::EventHandler
|
55
61
|
|
56
62
|
namespace TestEventModule
|
57
|
-
|
63
|
+
|
58
64
|
class << self
|
59
|
-
attr_reader :test_event_handled, :another_test_event_handled, :class_macro_event_handled
|
65
|
+
attr_reader :test_event_handled, :another_test_event_handled, :class_macro_event_handled, :exception
|
66
|
+
attr_writer :raise_error
|
60
67
|
end
|
61
68
|
|
62
69
|
def self.handle_test_event aggregate_id, event
|
70
|
+
if @raise_error
|
71
|
+
@raise_error = false
|
72
|
+
raise "Error occured"
|
73
|
+
end
|
63
74
|
@test_event_handled = true
|
64
75
|
end
|
76
|
+
|
77
|
+
def self.on_exception exception
|
78
|
+
@exception = exception
|
79
|
+
end
|
65
80
|
|
66
81
|
def self.handle_another_test_event aggregate_id, event
|
67
82
|
@another_test_event_handled = true
|
@@ -71,4 +86,4 @@ class DummyEventhandler
|
|
71
86
|
@class_macro_event_handled = true
|
72
87
|
end
|
73
88
|
|
74
|
-
end
|
89
|
+
end
|
metadata
CHANGED
@@ -1,60 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rcqrs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tim de Putter
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-11-06 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: rspec-spies
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - ! '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: activemodel
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
45
|
- - ! '>='
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: uuid
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
type: :runtime
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
58
69
|
description: Framework to provide cqrs + eventsourcing functionality in ruby.
|
59
70
|
email:
|
60
71
|
- tim.de.putter83@googlemail.com
|
@@ -111,27 +122,26 @@ files:
|
|
111
122
|
- spec/test_event_bus.rb
|
112
123
|
homepage:
|
113
124
|
licenses: []
|
125
|
+
metadata: {}
|
114
126
|
post_install_message:
|
115
127
|
rdoc_options: []
|
116
128
|
require_paths:
|
117
129
|
- lib
|
118
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
131
|
requirements:
|
121
132
|
- - ! '>='
|
122
133
|
- !ruby/object:Gem::Version
|
123
134
|
version: '0'
|
124
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
136
|
requirements:
|
127
137
|
- - ! '>='
|
128
138
|
- !ruby/object:Gem::Version
|
129
139
|
version: '0'
|
130
140
|
requirements: []
|
131
141
|
rubyforge_project: rcqrs
|
132
|
-
rubygems_version:
|
142
|
+
rubygems_version: 2.4.6
|
133
143
|
signing_key:
|
134
|
-
specification_version:
|
144
|
+
specification_version: 4
|
135
145
|
summary: Framework to provide cqrs + eventsourcing functionality in ruby.
|
136
146
|
test_files:
|
137
147
|
- spec/aggregate_root_base_spec.rb
|