generated from dogmatiq/template-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhandler_test.go
116 lines (109 loc) · 3.1 KB
/
handler_test.go
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package configkit_test
import (
. "github.com/dogmatiq/configkit"
"github.com/dogmatiq/dogma"
. "github.com/dogmatiq/enginekit/enginetest/stubs"
. "github.com/onsi/ginkgo"
. "github.com/onsi/ginkgo/extensions/table"
. "github.com/onsi/gomega"
)
var _ = Describe("func IsHandlerEqual()", func() {
It("returns true if the two handlers are equivalent", func() {
h := &AggregateMessageHandlerStub{
ConfigureFunc: func(c dogma.AggregateConfigurer) {
c.Identity("<name>", aggregateKey)
c.Routes(
dogma.HandlesCommand[CommandStub[TypeA]](),
dogma.HandlesCommand[CommandStub[TypeB]](),
dogma.RecordsEvent[EventStub[TypeA]](),
)
},
}
a := FromAggregate(h)
b := FromAggregate(h)
Expect(IsHandlerEqual(a, b)).To(BeTrue())
})
DescribeTable(
"returns false if the handlers are not equivalent",
func(b Handler) {
h := &AggregateMessageHandlerStub{
ConfigureFunc: func(c dogma.AggregateConfigurer) {
c.Identity("<name>", aggregateKey)
c.Routes(
dogma.HandlesCommand[CommandStub[TypeA]](),
dogma.HandlesCommand[CommandStub[TypeB]](),
dogma.RecordsEvent[EventStub[TypeA]](),
)
},
}
a := FromAggregate(h)
Expect(IsHandlerEqual(a, b)).To(BeFalse())
},
Entry(
"handler type differs",
FromIntegration(&IntegrationMessageHandlerStub{ // diff
ConfigureFunc: func(c dogma.IntegrationConfigurer) {
c.Identity("<name>", integrationKey)
c.Routes(
dogma.HandlesCommand[CommandStub[TypeA]](),
dogma.HandlesCommand[CommandStub[TypeB]](),
dogma.RecordsEvent[EventStub[TypeA]](),
)
},
}),
),
Entry(
"identity name differs",
FromAggregate(&AggregateMessageHandlerStub{
ConfigureFunc: func(c dogma.AggregateConfigurer) {
c.Identity("<name-different>", aggregateKey) // diff
c.Routes(
dogma.HandlesCommand[CommandStub[TypeA]](),
dogma.HandlesCommand[CommandStub[TypeB]](),
dogma.RecordsEvent[EventStub[TypeA]](),
)
},
}),
),
Entry(
"identity key differs",
FromAggregate(&AggregateMessageHandlerStub{
ConfigureFunc: func(c dogma.AggregateConfigurer) {
c.Identity("<name>", "799239e7-8c03-48f9-a324-14b7f9b76e30") // diff
c.Routes(
dogma.HandlesCommand[CommandStub[TypeA]](),
dogma.HandlesCommand[CommandStub[TypeB]](),
dogma.RecordsEvent[EventStub[TypeA]](),
)
},
}),
),
Entry(
"disabled state differs",
FromAggregate(&AggregateMessageHandlerStub{
ConfigureFunc: func(c dogma.AggregateConfigurer) {
c.Identity("<name>", aggregateKey)
c.Routes(
dogma.HandlesCommand[CommandStub[TypeA]](),
dogma.HandlesCommand[CommandStub[TypeB]](),
dogma.RecordsEvent[EventStub[TypeA]](),
)
c.Disable()
},
}),
),
Entry(
"messages differ",
FromAggregate(&AggregateMessageHandlerStub{
ConfigureFunc: func(c dogma.AggregateConfigurer) {
c.Identity("<name>", aggregateKey)
c.Routes(
dogma.HandlesCommand[CommandStub[TypeA]](),
dogma.HandlesCommand[CommandStub[TypeC]](), // diff
dogma.RecordsEvent[EventStub[TypeA]](),
)
},
}),
),
)
})