3
3
4
4
import pytest
5
5
6
+ from winter .core import ComponentMethod
6
7
from winter_ddd import DomainEvent
7
8
from winter_ddd import domain_event_handler
8
- from winter_ddd import global_domain_event_dispatcher
9
+ from winter_ddd import DomainEventDispatcher
9
10
10
11
11
12
class CustomDomainEvent (DomainEvent ):
@@ -20,41 +21,37 @@ class YetAnotherCustomEvent(DomainEvent):
20
21
pass
21
22
22
23
23
- @pytest .fixture
24
- def empty_handler ():
25
- class Handler :
26
- handled_domain_events = []
27
- handled_another_domain_events = []
28
- handled_many_domain_events = []
29
- handled_many_another_domain_events = []
30
- handled_union_domain_events = []
31
- handled_union_list_domain_events = []
32
-
33
- @domain_event_handler
34
- def empty_handle (self , domain_event : CustomDomainEvent ):
35
- self .handled_domain_events .append (domain_event )
24
+ class _TestHandler :
25
+ handled_domain_events = []
26
+ handled_another_domain_events = []
27
+ handled_many_domain_events = []
28
+ handled_many_another_domain_events = []
29
+ handled_union_domain_events = []
30
+ handled_union_list_domain_events = []
36
31
37
- @domain_event_handler
38
- def handle_many (self , domain_events : List [ CustomDomainEvent ] ):
39
- self .handled_many_domain_events .append (domain_events )
32
+ @domain_event_handler
33
+ def empty_handle (self , domain_event : CustomDomainEvent ):
34
+ self .handled_domain_events .append (domain_event )
40
35
41
- @domain_event_handler
42
- def handle_another (self , domain_event : AnotherCustomEvent ):
43
- self .handled_another_domain_events .append (domain_event )
36
+ @domain_event_handler
37
+ def handle_many (self , domain_events : List [ CustomDomainEvent ] ):
38
+ self .handled_many_domain_events .append (domain_events )
44
39
45
- @domain_event_handler
46
- def handle_many_another (self , domain_events : List [ AnotherCustomEvent ] ):
47
- self .handled_many_another_domain_events .append (domain_events )
40
+ @domain_event_handler
41
+ def handle_another (self , domain_event : AnotherCustomEvent ):
42
+ self .handled_another_domain_events .append (domain_event )
48
43
49
- @domain_event_handler
50
- def handle_union (self , domain_event : Union [ CustomDomainEvent , AnotherCustomEvent ]):
51
- self .handled_union_domain_events .append (domain_event )
44
+ @domain_event_handler
45
+ def handle_many_another (self , domain_events : List [ AnotherCustomEvent ]):
46
+ self .handled_many_another_domain_events .append (domain_events )
52
47
53
- @domain_event_handler
54
- def handle_union_list (self , domain_events : List [ Union [CustomDomainEvent , AnotherCustomEvent ] ]):
55
- self .handled_union_list_domain_events .append (domain_events )
48
+ @domain_event_handler
49
+ def handle_union (self , domain_event : Union [CustomDomainEvent , AnotherCustomEvent ]):
50
+ self .handled_union_domain_events .append (domain_event )
56
51
57
- yield Handler ()
52
+ @domain_event_handler
53
+ def handle_union_list (self , domain_events : List [Union [CustomDomainEvent , AnotherCustomEvent ]]):
54
+ self .handled_union_list_domain_events .append (domain_events )
58
55
59
56
60
57
class DomainEventForOrder (DomainEvent ):
@@ -101,27 +98,30 @@ def handle_one(self, domain_event: DomainEventForOrder):
101
98
self .handled_domain_events .append ('handle_one_3' )
102
99
103
100
104
- def test_process_domain_events (empty_handler ):
101
+ def test_process_domain_events ():
105
102
domain_event1 = CustomDomainEvent ()
106
103
domain_event2 = CustomDomainEvent ()
107
104
another_domain_event = AnotherCustomEvent ()
108
105
yet_another_domain_event = YetAnotherCustomEvent ()
109
106
107
+ dispatcher = DomainEventDispatcher ()
108
+ dispatcher .add_handlers_from_class (_TestHandler )
109
+
110
110
# Act
111
- global_domain_event_dispatcher .dispatch ([
111
+ dispatcher .dispatch ([
112
112
domain_event1 ,
113
113
another_domain_event ,
114
114
yet_another_domain_event ,
115
115
domain_event2 ,
116
116
])
117
117
118
118
# Assert
119
- assert empty_handler .handled_domain_events == [domain_event1 , domain_event2 ]
120
- assert empty_handler .handled_another_domain_events == [another_domain_event ]
121
- assert empty_handler .handled_many_domain_events == [[domain_event1 , domain_event2 ]]
122
- assert empty_handler .handled_many_another_domain_events == [[another_domain_event ]]
123
- assert empty_handler .handled_union_domain_events == [domain_event1 , another_domain_event , domain_event2 ]
124
- assert empty_handler .handled_union_list_domain_events == [[domain_event1 , another_domain_event , domain_event2 ]]
119
+ assert _TestHandler .handled_domain_events == [domain_event1 , domain_event2 ]
120
+ assert _TestHandler .handled_another_domain_events == [another_domain_event ]
121
+ assert _TestHandler .handled_many_domain_events == [[domain_event1 , domain_event2 ]]
122
+ assert _TestHandler .handled_many_another_domain_events == [[another_domain_event ]]
123
+ assert _TestHandler .handled_union_domain_events == [domain_event1 , another_domain_event , domain_event2 ]
124
+ assert _TestHandler .handled_union_list_domain_events == [[domain_event1 , another_domain_event , domain_event2 ]]
125
125
126
126
127
127
def test_order_process_domain_events ():
@@ -132,9 +132,14 @@ def test_order_process_domain_events():
132
132
OrderHandler2 .handled_domain_events = handled_events
133
133
OrderHandler3 .handled_domain_events = handled_events
134
134
135
+ dispatcher = DomainEventDispatcher ()
136
+ dispatcher .add_handlers_from_class (OrderHandler1 )
137
+ dispatcher .add_handlers_from_class (OrderHandler2 )
138
+ dispatcher .add_handlers_from_class (OrderHandler3 )
139
+
135
140
# Act
136
141
for _ in range (5 ):
137
- global_domain_event_dispatcher .dispatch ([
142
+ dispatcher .dispatch ([
138
143
domain_event ,
139
144
])
140
145
0 commit comments