evt-messaging-fixtures 0.0.0.1 → 1.0.0.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 +4 -4
- data/lib/messaging/fixtures.rb +3 -2
- data/lib/messaging/fixtures/controls.rb +1 -0
- data/lib/messaging/fixtures/controls/handler.rb +8 -0
- data/lib/messaging/fixtures/controls/message.rb +12 -0
- data/lib/messaging/fixtures/controls/metadata.rb +69 -0
- data/lib/messaging/fixtures/defaults.rb +2 -2
- data/lib/messaging/fixtures/follows.rb +57 -0
- data/lib/messaging/fixtures/handler.rb +50 -31
- data/lib/messaging/fixtures/message.rb +123 -0
- data/lib/messaging/fixtures/metadata.rb +92 -0
- data/lib/messaging/fixtures/write.rb +16 -5
- metadata +6 -4
- data/lib/messaging/fixtures/input_message.rb +0 -52
- data/lib/messaging/fixtures/written_message.rb +0 -84
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f3171c20b3fd5d5255db7dd0ea88ce246ea703d7d05c82907af753714d2fcba
|
4
|
+
data.tar.gz: cdfaa3633ae26dd1d90eaaf003932e927d9d7892b9693204b80a1d07e7f54f21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b8e32dafbdbbbf33c8e0b57553303adcb08573f9acf5c6fedefb47b3d66026f320be590f03de8f2f8eea648c13c00d289d44b794951ebff3e2819f79760e89f
|
7
|
+
data.tar.gz: 3d764a901687dc32e4da976a4d9671f6fc20c8952e5429195e593826a919467fde92d197ff3895b1dbc5a0ad3439f915b383fcab71cc2fb927c8ea55de3b34aa
|
data/lib/messaging/fixtures.rb
CHANGED
@@ -3,7 +3,8 @@ require 'schema/fixtures'
|
|
3
3
|
require 'entity_store'
|
4
4
|
|
5
5
|
require 'messaging/fixtures/defaults'
|
6
|
-
require 'messaging/fixtures/
|
7
|
-
require 'messaging/fixtures/
|
6
|
+
require 'messaging/fixtures/follows'
|
7
|
+
require 'messaging/fixtures/metadata'
|
8
|
+
require 'messaging/fixtures/message'
|
8
9
|
require 'messaging/fixtures/write'
|
9
10
|
require 'messaging/fixtures/handler'
|
@@ -2,6 +2,7 @@ require 'messaging/controls'
|
|
2
2
|
|
3
3
|
require 'messaging/fixtures/controls/id'
|
4
4
|
require 'messaging/fixtures/controls/time'
|
5
|
+
require 'messaging/fixtures/controls/metadata'
|
5
6
|
require 'messaging/fixtures/controls/message'
|
6
7
|
require 'messaging/fixtures/controls/event'
|
7
8
|
require 'messaging/fixtures/controls/sequence'
|
@@ -45,18 +45,26 @@ module Messaging
|
|
45
45
|
|
46
46
|
if example.alternate_condition?
|
47
47
|
alternate_output = Controls::Event::AlternateOutput.follow(input, copy: attributes)
|
48
|
+
|
48
49
|
alternate_output.processed_time = time
|
49
50
|
alternate_output.sequence = sequence
|
50
51
|
|
52
|
+
alternate_output.metadata.correlation_stream_name = 'someCorrelationStream'
|
53
|
+
alternate_output.metadata.reply_stream_name = 'someReplyStream'
|
54
|
+
|
51
55
|
write.(alternate_output, stream_name, expected_version: version)
|
52
56
|
|
53
57
|
return
|
54
58
|
end
|
55
59
|
|
56
60
|
output = Controls::Event::Output.follow(input, copy: attributes)
|
61
|
+
|
57
62
|
output.processed_time = time
|
58
63
|
output.sequence = sequence
|
59
64
|
|
65
|
+
output.metadata.correlation_stream_name = 'someCorrelationStream'
|
66
|
+
output.metadata.reply_stream_name = 'someReplyStream'
|
67
|
+
|
60
68
|
write.(output, stream_name, expected_version: version)
|
61
69
|
end
|
62
70
|
end
|
@@ -38,6 +38,18 @@ module Messaging
|
|
38
38
|
Metadata.example
|
39
39
|
end
|
40
40
|
|
41
|
+
module SomeMessage
|
42
|
+
def self.example
|
43
|
+
Example.new
|
44
|
+
end
|
45
|
+
|
46
|
+
class Example
|
47
|
+
include Messaging::Message
|
48
|
+
|
49
|
+
attribute :some_attribute, String
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
41
53
|
module Metadata
|
42
54
|
def self.example
|
43
55
|
metadata = Messaging::Message::Metadata.new
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Messaging
|
2
|
+
module Fixtures
|
3
|
+
module Controls
|
4
|
+
module Metadata
|
5
|
+
def self.example
|
6
|
+
metadata = Messaging::Message::Metadata.new
|
7
|
+
|
8
|
+
metadata.stream_name = stream_name
|
9
|
+
metadata.position = position
|
10
|
+
metadata.global_position = global_position
|
11
|
+
|
12
|
+
metadata.causation_message_stream_name = causation_message_stream_name
|
13
|
+
metadata.causation_message_position = causation_message_position
|
14
|
+
metadata.causation_message_global_position = causation_message_global_position
|
15
|
+
|
16
|
+
metadata.correlation_stream_name = correlation_stream_name
|
17
|
+
|
18
|
+
metadata.reply_stream_name = reply_stream_name
|
19
|
+
|
20
|
+
metadata.time = time
|
21
|
+
|
22
|
+
metadata.schema_version = schema_version
|
23
|
+
|
24
|
+
metadata
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.stream_name
|
28
|
+
"example:command-#{Entity.id}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.position
|
32
|
+
1
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.global_position
|
36
|
+
111
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.causation_message_stream_name
|
40
|
+
Message::Metadata.stream_name
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.causation_message_position
|
44
|
+
Message::Metadata.position
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.causation_message_global_position
|
48
|
+
Message::Metadata.global_position
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.correlation_stream_name
|
52
|
+
'someCorrelationStream'
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.reply_stream_name
|
56
|
+
'someReplyStream'
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.time
|
60
|
+
::Time.utc(2000, 1, 1, 0, 0, 0, 11)
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.schema_version
|
64
|
+
'1'
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Messaging
|
2
|
+
module Fixtures
|
3
|
+
class Follows
|
4
|
+
include TestBench::Fixture
|
5
|
+
include Initializer
|
6
|
+
|
7
|
+
initializer :metadata, :source_metadata
|
8
|
+
|
9
|
+
def self.build(metadata, source_metadata=nil)
|
10
|
+
new(metadata, source_metadata)
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
context do
|
15
|
+
if metadata.nil?
|
16
|
+
test "Metadata not nil" do
|
17
|
+
detail "Metadata: nil"
|
18
|
+
refute(metadata.nil?)
|
19
|
+
end
|
20
|
+
return
|
21
|
+
end
|
22
|
+
|
23
|
+
if source_metadata.nil?
|
24
|
+
test "Source metadata not nil" do
|
25
|
+
detail "Source Metadata: nil"
|
26
|
+
refute(source_metadata.nil?)
|
27
|
+
end
|
28
|
+
return
|
29
|
+
end
|
30
|
+
|
31
|
+
call!
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def call!
|
36
|
+
test "Follows" do
|
37
|
+
detail "Stream Name: #{source_metadata.stream_name.inspect}"
|
38
|
+
detail "Causation Stream Name: #{metadata.causation_message_stream_name.inspect}"
|
39
|
+
|
40
|
+
detail "Position: #{source_metadata.position.inspect}"
|
41
|
+
detail "Causation Position: #{metadata.causation_message_position.inspect}"
|
42
|
+
|
43
|
+
detail "Global Position: #{source_metadata.global_position.inspect}"
|
44
|
+
detail "Causation Global Position: #{metadata.causation_message_global_position.inspect}"
|
45
|
+
|
46
|
+
detail "Source Correlation Stream Name: #{source_metadata.correlation_stream_name.inspect}"
|
47
|
+
detail "Correlation Stream Name: #{metadata.correlation_stream_name.inspect}"
|
48
|
+
|
49
|
+
detail "Source Reply Stream Name: #{source_metadata.reply_stream_name.inspect}"
|
50
|
+
detail "Reply Stream Name: #{metadata.reply_stream_name.inspect}"
|
51
|
+
|
52
|
+
assert(metadata.follows?(source_metadata))
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Messaging
|
2
2
|
module Fixtures
|
3
3
|
class Handler
|
4
|
+
Error = Class.new(RuntimeError)
|
5
|
+
|
4
6
|
include TestBench::Fixture
|
5
7
|
include Initializer
|
6
8
|
|
@@ -9,14 +11,14 @@ module Messaging
|
|
9
11
|
entity.sequence
|
10
12
|
end
|
11
13
|
|
12
|
-
initializer :handler, :input_message, :entity, :entity_version, :
|
14
|
+
initializer :handler, :input_message, :entity, :entity_version, :clock_time, :identifier_uuid, :action
|
13
15
|
|
14
|
-
def self.build(handler, input_message, entity=nil, entity_version=nil,
|
15
|
-
instance = new(handler, input_message, entity, entity_version,
|
16
|
+
def self.build(handler, input_message, entity=nil, entity_version=nil, clock_time: nil, identifier_uuid: nil, &action)
|
17
|
+
instance = new(handler, input_message, entity, entity_version, clock_time, identifier_uuid, action)
|
16
18
|
|
17
19
|
set_store_entity(handler, entity, entity_version)
|
18
|
-
set_clock_time(handler,
|
19
|
-
set_identifier_uuid(handler,
|
20
|
+
set_clock_time(handler, clock_time)
|
21
|
+
set_identifier_uuid(handler, identifier_uuid)
|
20
22
|
|
21
23
|
instance
|
22
24
|
end
|
@@ -27,23 +29,23 @@ module Messaging
|
|
27
29
|
handler.store.add(entity.id, entity, entity_version)
|
28
30
|
end
|
29
31
|
|
30
|
-
def self.set_clock_time(handler,
|
31
|
-
if
|
32
|
+
def self.set_clock_time(handler, clock_time)
|
33
|
+
if clock_time.nil?
|
32
34
|
if handler.respond_to?(:clock)
|
33
|
-
handler.clock.now = Defaults.
|
35
|
+
handler.clock.now = Defaults.clock_time
|
34
36
|
end
|
35
37
|
else
|
36
|
-
handler.clock.now =
|
38
|
+
handler.clock.now = clock_time
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
40
|
-
def self.set_identifier_uuid(handler,
|
41
|
-
if
|
42
|
+
def self.set_identifier_uuid(handler, identifier_uuid)
|
43
|
+
if identifier_uuid.nil?
|
42
44
|
if handler.respond_to?(:identifier)
|
43
|
-
handler.identifier.set(Defaults.
|
45
|
+
handler.identifier.set(Defaults.identifier_uuid)
|
44
46
|
end
|
45
47
|
else
|
46
|
-
handler.identifier.set(
|
48
|
+
handler.identifier.set(identifier_uuid)
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
@@ -51,52 +53,69 @@ module Messaging
|
|
51
53
|
context "Handler: #{handler.class.name.split('::').last}" do
|
52
54
|
detail "Handler Class: #{handler.class.name}"
|
53
55
|
|
56
|
+
if action.nil?
|
57
|
+
raise Error, "Handler fixture must be executed with a block"
|
58
|
+
end
|
59
|
+
|
54
60
|
detail "Entity Class: #{entity.class.name}"
|
55
|
-
detail "Entity Data: #{entity&.attributes}"
|
61
|
+
detail "Entity Data: #{entity&.attributes.inspect}"
|
56
62
|
|
57
|
-
|
63
|
+
if not clock_time.nil?
|
64
|
+
detail "Clock Time: #{clock_time.inspect}"
|
65
|
+
end
|
58
66
|
|
59
|
-
if not
|
60
|
-
|
67
|
+
if not identifier_uuid.nil?
|
68
|
+
detail "Identifier UUID: #{identifier_uuid}"
|
61
69
|
end
|
70
|
+
|
71
|
+
handler.(input_message)
|
72
|
+
|
73
|
+
action.call(self)
|
62
74
|
end
|
63
75
|
end
|
64
76
|
|
65
|
-
def
|
66
|
-
|
77
|
+
def assert_input_message(&action)
|
78
|
+
context_name = "Input Message"
|
79
|
+
if not input_message.nil?
|
80
|
+
context_name = "#{context_name}: #{input_message.class.message_type}"
|
81
|
+
end
|
67
82
|
|
68
|
-
|
83
|
+
fixture(Message, input_message, title_context_name: context_name, &action)
|
84
|
+
end
|
69
85
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
86
|
+
def assert_written_message(written_message, &action)
|
87
|
+
context_name = "Written Message"
|
88
|
+
if not written_message.nil?
|
89
|
+
context_name = "#{context_name}: #{written_message.class.message_type}"
|
74
90
|
end
|
91
|
+
|
92
|
+
fixture(Message, written_message, input_message, title_context_name: context_name, &action)
|
93
|
+
end
|
94
|
+
|
95
|
+
def assert_write(message_class, &action)
|
96
|
+
fixture = fixture(Write, handler.write, message_class, &action)
|
97
|
+
fixture.message
|
75
98
|
end
|
76
99
|
|
77
100
|
def refute_write(message_class=nil)
|
78
101
|
writer = handler.write
|
79
102
|
|
80
|
-
|
103
|
+
context_name = "No Write"
|
81
104
|
if not message_class.nil?
|
82
105
|
write_telemetry_data = Write.get_data(writer, message_class)
|
83
106
|
written = !write_telemetry_data.nil?
|
84
|
-
|
107
|
+
context_name = "#{context_name}: #{message_class.message_type}"
|
85
108
|
else
|
86
109
|
written = writer.written?
|
87
110
|
end
|
88
111
|
|
89
|
-
context
|
112
|
+
context context_name do
|
90
113
|
detail "Message Class: #{message_class.inspect}"
|
91
114
|
test "Not written" do
|
92
115
|
refute(written)
|
93
116
|
end
|
94
117
|
end
|
95
118
|
end
|
96
|
-
|
97
|
-
def assert_input_message(attributes=nil, &action)
|
98
|
-
fixture = fixture(InputMessage, input_message, &action)
|
99
|
-
end
|
100
119
|
end
|
101
120
|
end
|
102
121
|
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
module Messaging
|
2
|
+
module Fixtures
|
3
|
+
class Message
|
4
|
+
Error = Class.new(RuntimeError)
|
5
|
+
|
6
|
+
include TestBench::Fixture
|
7
|
+
include Initializer
|
8
|
+
|
9
|
+
def message_class
|
10
|
+
message.class
|
11
|
+
end
|
12
|
+
|
13
|
+
def message_type
|
14
|
+
message_class.name.split('::').last
|
15
|
+
end
|
16
|
+
|
17
|
+
def source_message_class
|
18
|
+
source_message.class
|
19
|
+
end
|
20
|
+
|
21
|
+
def source_message_type
|
22
|
+
source_message_class.name.split('::').last
|
23
|
+
end
|
24
|
+
|
25
|
+
def title_context_name
|
26
|
+
@title_context_name ||= "Message"
|
27
|
+
end
|
28
|
+
|
29
|
+
initializer :message, :source_message, na(:title_context_name), :action
|
30
|
+
|
31
|
+
def self.build(message, source_message=nil, title_context_name: nil, &action)
|
32
|
+
new(message, source_message, title_context_name, action)
|
33
|
+
end
|
34
|
+
|
35
|
+
def call
|
36
|
+
context_name = title_context_name
|
37
|
+
|
38
|
+
context context_name do
|
39
|
+
if action.nil?
|
40
|
+
raise Error, "Message fixture must be executed with a block"
|
41
|
+
end
|
42
|
+
|
43
|
+
if message.nil?
|
44
|
+
test "Not nil" do
|
45
|
+
detail "Message: nil"
|
46
|
+
detail "Remaining message tests are skipped"
|
47
|
+
refute(message.nil?)
|
48
|
+
end
|
49
|
+
return
|
50
|
+
end
|
51
|
+
|
52
|
+
detail "Message Class: #{message_class.name}"
|
53
|
+
|
54
|
+
if not source_message.nil?
|
55
|
+
detail "Source Message Class: #{source_message_class.name}"
|
56
|
+
end
|
57
|
+
|
58
|
+
action.call(self)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def assert_attributes_assigned(attribute_names=nil)
|
63
|
+
fixture(
|
64
|
+
Schema::Fixtures::Assignment,
|
65
|
+
message,
|
66
|
+
attribute_names,
|
67
|
+
print_title_context: false,
|
68
|
+
attributes_context_name: "Attributes Assigned"
|
69
|
+
)
|
70
|
+
end
|
71
|
+
|
72
|
+
def assert_attributes_copied(attribute_names=nil)
|
73
|
+
if source_message.nil?
|
74
|
+
test "Source message not nil" do
|
75
|
+
detail "Source Message: nil"
|
76
|
+
refute(source_message.nil?)
|
77
|
+
end
|
78
|
+
return
|
79
|
+
end
|
80
|
+
|
81
|
+
fixture(
|
82
|
+
Schema::Fixtures::Equality,
|
83
|
+
source_message,
|
84
|
+
message,
|
85
|
+
attribute_names,
|
86
|
+
ignore_class: true,
|
87
|
+
print_title_context: false,
|
88
|
+
attributes_context_name: "Attributes Copied: #{source_message_type} => #{message_type}"
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
92
|
+
def assert_metadata(&action)
|
93
|
+
fixture(
|
94
|
+
Metadata,
|
95
|
+
message.metadata,
|
96
|
+
source_message&.metadata,
|
97
|
+
&action
|
98
|
+
)
|
99
|
+
end
|
100
|
+
|
101
|
+
def assert_follows
|
102
|
+
metadata = message.metadata
|
103
|
+
source_metadata = source_message&.metadata
|
104
|
+
|
105
|
+
fixture(Follows, metadata, source_metadata)
|
106
|
+
end
|
107
|
+
|
108
|
+
def assert_attribute_value(name, value)
|
109
|
+
context "Attribute Value" do
|
110
|
+
attribute_value = message.public_send(name)
|
111
|
+
|
112
|
+
test "#{name}" do
|
113
|
+
detail "Attribute Value: #{attribute_value.inspect}"
|
114
|
+
detail "Compare Value: #{value.inspect}"
|
115
|
+
|
116
|
+
assert(attribute_value == value)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
module Messaging
|
2
|
+
module Fixtures
|
3
|
+
class Metadata
|
4
|
+
Error = Class.new(RuntimeError)
|
5
|
+
|
6
|
+
include TestBench::Fixture
|
7
|
+
include Initializer
|
8
|
+
|
9
|
+
initializer :metadata, :source_metadata, :action
|
10
|
+
|
11
|
+
def self.build(metadata, source_metadata=nil, &action)
|
12
|
+
new(metadata, source_metadata, action)
|
13
|
+
end
|
14
|
+
|
15
|
+
def call
|
16
|
+
context "Metadata" do
|
17
|
+
if action.nil?
|
18
|
+
raise Error, "Metadata fixture must be executed with a block"
|
19
|
+
end
|
20
|
+
|
21
|
+
if metadata.nil?
|
22
|
+
test "Not nil" do
|
23
|
+
detail "Metadata: nil"
|
24
|
+
|
25
|
+
if not action.nil?
|
26
|
+
detail "Remaining message tests are skipped"
|
27
|
+
end
|
28
|
+
|
29
|
+
refute(metadata.nil?)
|
30
|
+
end
|
31
|
+
return
|
32
|
+
end
|
33
|
+
|
34
|
+
action.call(self)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def assert_attributes_assigned(attribute_names=nil, context_title_qualifier: nil)
|
39
|
+
attribute_names ||= Messaging::Message::Metadata.all_attribute_names
|
40
|
+
|
41
|
+
attributes_context_title = "#{context_title_qualifier} Attributes Assigned".lstrip
|
42
|
+
|
43
|
+
fixture(
|
44
|
+
Schema::Fixtures::Assignment,
|
45
|
+
metadata,
|
46
|
+
attribute_names,
|
47
|
+
print_title_context: false,
|
48
|
+
attributes_context_name: attributes_context_title
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
def assert_source_attributes_assigned
|
53
|
+
attribute_names = Messaging::Message::Metadata.source_attribute_names
|
54
|
+
assert_attributes_assigned(attribute_names, context_title_qualifier: 'Source')
|
55
|
+
end
|
56
|
+
|
57
|
+
def assert_workflow_attributes_assigned
|
58
|
+
attribute_names = Messaging::Message::Metadata.workflow_attribute_names
|
59
|
+
assert_attributes_assigned(attribute_names, context_title_qualifier: 'Workflow')
|
60
|
+
end
|
61
|
+
|
62
|
+
def assert_causation_attributes_assigned
|
63
|
+
attribute_names = Messaging::Message::Metadata.causation_attribute_names
|
64
|
+
assert_attributes_assigned(attribute_names, context_title_qualifier: 'Causation')
|
65
|
+
end
|
66
|
+
|
67
|
+
def assert_correlation_stream_name(correlation_stream_name)
|
68
|
+
metadata_value = metadata.correlation_stream_name
|
69
|
+
|
70
|
+
test "correlation_stream_name" do
|
71
|
+
detail "Metadata Value: #{metadata_value}"
|
72
|
+
detail "Compare Value: #{correlation_stream_name}"
|
73
|
+
assert(metadata_value == correlation_stream_name)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def assert_reply_stream_name(reply_stream_name)
|
78
|
+
metadata_value = metadata.reply_stream_name
|
79
|
+
|
80
|
+
test "reply_stream_name" do
|
81
|
+
detail "Metadata Value: #{metadata_value}"
|
82
|
+
detail "Compare Value: #{reply_stream_name}"
|
83
|
+
assert(metadata_value == reply_stream_name)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def assert_follows
|
88
|
+
fixture(Follows, metadata, source_metadata)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -40,20 +40,31 @@ module Messaging
|
|
40
40
|
def call
|
41
41
|
message_class = message&.class
|
42
42
|
|
43
|
-
|
43
|
+
context_name = 'Write'
|
44
|
+
if not message_class.nil?
|
45
|
+
context_name = "#{context_name}: #{message_class&.message_type}"
|
46
|
+
end
|
47
|
+
|
48
|
+
context context_name do
|
49
|
+
if action.nil?
|
50
|
+
raise Error, "Write fixture must be executed with a block"
|
51
|
+
end
|
52
|
+
|
44
53
|
detail "Message Class: #{message_class.inspect}"
|
45
54
|
|
46
55
|
written = !message.nil?
|
47
56
|
|
48
57
|
test "Written" do
|
58
|
+
if not action.nil?
|
59
|
+
detail "Remaining message tests are skipped"
|
60
|
+
end
|
61
|
+
|
49
62
|
assert(written)
|
50
63
|
end
|
51
64
|
|
52
|
-
return if !written
|
65
|
+
return if !written
|
53
66
|
|
54
|
-
|
55
|
-
action.call(self)
|
56
|
-
end
|
67
|
+
action.call(self)
|
57
68
|
end
|
58
69
|
|
59
70
|
message
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evt-messaging-fixtures
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.0
|
4
|
+
version: 1.0.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Eventide Project
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: evt-entity_store
|
@@ -65,14 +65,16 @@ files:
|
|
65
65
|
- lib/messaging/fixtures/controls/handler.rb
|
66
66
|
- lib/messaging/fixtures/controls/id.rb
|
67
67
|
- lib/messaging/fixtures/controls/message.rb
|
68
|
+
- lib/messaging/fixtures/controls/metadata.rb
|
68
69
|
- lib/messaging/fixtures/controls/sequence.rb
|
69
70
|
- lib/messaging/fixtures/controls/store.rb
|
70
71
|
- lib/messaging/fixtures/controls/time.rb
|
71
72
|
- lib/messaging/fixtures/defaults.rb
|
73
|
+
- lib/messaging/fixtures/follows.rb
|
72
74
|
- lib/messaging/fixtures/handler.rb
|
73
|
-
- lib/messaging/fixtures/
|
75
|
+
- lib/messaging/fixtures/message.rb
|
76
|
+
- lib/messaging/fixtures/metadata.rb
|
74
77
|
- lib/messaging/fixtures/write.rb
|
75
|
-
- lib/messaging/fixtures/written_message.rb
|
76
78
|
homepage: https://github.com/eventide-project/messaging-fixtures
|
77
79
|
licenses:
|
78
80
|
- MIT
|
@@ -1,52 +0,0 @@
|
|
1
|
-
module Messaging
|
2
|
-
module Fixtures
|
3
|
-
class InputMessage
|
4
|
-
Error = Class.new(RuntimeError)
|
5
|
-
|
6
|
-
include TestBench::Fixture
|
7
|
-
include Initializer
|
8
|
-
|
9
|
-
initializer :input_message, :action
|
10
|
-
|
11
|
-
def self.build(input_message, &action)
|
12
|
-
new(input_message, action)
|
13
|
-
end
|
14
|
-
|
15
|
-
def call
|
16
|
-
input_message_class = input_message.class
|
17
|
-
|
18
|
-
context "Input Message: #{input_message_class.message_type}" do
|
19
|
-
detail "Input Message Class: #{input_message_class.name}"
|
20
|
-
|
21
|
-
if not action.nil?
|
22
|
-
action.call(self)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def assert_attributes_assigned(attribute_names=nil)
|
28
|
-
fixture(
|
29
|
-
Schema::Fixtures::Assignment,
|
30
|
-
input_message,
|
31
|
-
attribute_names,
|
32
|
-
print_title_context: false,
|
33
|
-
attributes_context_name: "Attributes Assigned"
|
34
|
-
)
|
35
|
-
end
|
36
|
-
|
37
|
-
def assert_metadata_attributes_assigned(attribute_names=nil)
|
38
|
-
attribute_names = [:stream_name, :position, :global_position]
|
39
|
-
|
40
|
-
metadata = input_message.metadata
|
41
|
-
|
42
|
-
fixture(
|
43
|
-
Schema::Fixtures::Assignment,
|
44
|
-
metadata,
|
45
|
-
attribute_names,
|
46
|
-
print_title_context: false,
|
47
|
-
attributes_context_name: "Metadata Attributes Assigned"
|
48
|
-
)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
module Messaging
|
2
|
-
module Fixtures
|
3
|
-
class WrittenMessage
|
4
|
-
Error = Class.new(RuntimeError)
|
5
|
-
|
6
|
-
include TestBench::Fixture
|
7
|
-
include Initializer
|
8
|
-
|
9
|
-
initializer :output_message, :input_message
|
10
|
-
|
11
|
-
def self.build(output_message, input_message)
|
12
|
-
new(output_message, input_message)
|
13
|
-
end
|
14
|
-
|
15
|
-
def call(&action)
|
16
|
-
input_message_class = input_message.class
|
17
|
-
output_message_class = output_message.class
|
18
|
-
|
19
|
-
context "Written Message: #{output_message_class.message_type}" do
|
20
|
-
detail "Input Message Class: #{input_message_class.name}"
|
21
|
-
detail "Written Message Class: #{output_message_class.name}"
|
22
|
-
|
23
|
-
if not action.nil?
|
24
|
-
action.call(self)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def assert_follows
|
30
|
-
input_message_type = input_message.class.message_type
|
31
|
-
output_message_type = output_message.class.message_type
|
32
|
-
|
33
|
-
test "Follows: #{input_message_type}" do
|
34
|
-
detail "#{input_message_type} Stream Name: #{input_message.metadata.stream_name.inspect}"
|
35
|
-
detail "#{output_message_type} Causation Stream Name: #{output_message.metadata.causation_message_stream_name.inspect}"
|
36
|
-
|
37
|
-
detail "#{input_message_type} Position: #{input_message.metadata.position.inspect}"
|
38
|
-
detail "#{output_message_type} Causation Position: #{output_message.metadata.causation_message_position.inspect}"
|
39
|
-
|
40
|
-
detail "#{input_message_type} Global Position: #{input_message.metadata.global_position.inspect}"
|
41
|
-
detail "#{output_message_type} Causation Global Position: #{output_message.metadata.causation_message_global_position.inspect}"
|
42
|
-
|
43
|
-
detail "#{input_message_type} Reply Stream Name: #{input_message.metadata.reply_stream_name.inspect}"
|
44
|
-
detail "#{output_message_type} Reply Stream Name: #{output_message.metadata.reply_stream_name.inspect}"
|
45
|
-
|
46
|
-
assert(output_message.follows?(input_message))
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def ___assert_attributes_copied(attribute_names=nil)
|
51
|
-
fixture(
|
52
|
-
Schema::Fixtures::Equality,
|
53
|
-
input_message,
|
54
|
-
output_message,
|
55
|
-
attribute_names,
|
56
|
-
ignore_class: true,
|
57
|
-
title_context_name: "Attributes Copied: #{input_message.class.message_type} => #{output_message.class.message_type}"
|
58
|
-
)
|
59
|
-
end
|
60
|
-
|
61
|
-
def assert_attributes_copied(attribute_names=nil)
|
62
|
-
fixture(
|
63
|
-
Schema::Fixtures::Equality,
|
64
|
-
input_message,
|
65
|
-
output_message,
|
66
|
-
attribute_names,
|
67
|
-
ignore_class: true,
|
68
|
-
print_title_context: false,
|
69
|
-
attributes_context_name: "Attributes Copied: #{input_message.class.message_type} => #{output_message.class.message_type}"
|
70
|
-
)
|
71
|
-
end
|
72
|
-
|
73
|
-
def assert_attributes_assigned(attribute_names=nil)
|
74
|
-
fixture(
|
75
|
-
Schema::Fixtures::Assignment,
|
76
|
-
output_message,
|
77
|
-
attribute_names,
|
78
|
-
print_title_context: false,
|
79
|
-
attributes_context_name: "Attributes Assigned: #{output_message.class.message_type}"
|
80
|
-
)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|