/
domain_event_spec.rb
66 lines (58 loc) · 1.75 KB
/
domain_event_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
require 'spec_helper'
module RubyEventStore
module Mappers
module Transformation
RSpec.describe DomainEvent do
let(:time) { Time.now.utc }
let(:uuid) { SecureRandom.uuid }
let(:time) { Time.now.utc }
let(:event) {
TimeEnrichment.with(
TestEvent.new(event_id: uuid,
data: {some: 'value'},
metadata: {some: 'meta'}),
timestamp: time,
valid_at: time
)
}
let(:record) {
Record.new(
event_id: uuid,
metadata: {some: 'meta'},
data: {some: 'value'},
event_type: 'TestEvent',
timestamp: time,
valid_at: time
)
}
specify "#dump" do
expect(DomainEvent.new.dump(event)).to eq(record)
end
specify "#load" do
loaded = DomainEvent.new.load(record)
expect(loaded).to eq(event)
expect(loaded.metadata.to_h).to eq(event.metadata.to_h)
end
specify "does not mutate custom event" do
event_klass = Class.new do
def initialize(data, metadata)
@event_id = SecureRandom.uuid
@data = data
@metadata = metadata
end
attr_reader :event_id, :data, :metadata
def event_type
"bazinga"
end
end
DomainEvent.new.dump(event = event_klass.new(
{some: 'data'},
{some: 'meta', valid_at: time, timestamp: time}
))
expect(event.data).to eq({some: 'data'})
expect(event.metadata).to eq({some: 'meta', valid_at: time, timestamp: time})
end
end
end
end
end