1
1
package org .reactivecommons .async .api ;
2
2
3
- import static org .assertj .core .api .Assertions .*;
4
- import static org .mockito .Mockito .*;
5
-
6
3
import lombok .Data ;
7
4
import org .junit .Test ;
8
5
import org .reactivecommons .api .domain .Command ;
9
6
import org .reactivecommons .api .domain .DomainEvent ;
10
7
import org .reactivecommons .async .api .handlers .CommandHandler ;
11
8
import org .reactivecommons .async .api .handlers .EventHandler ;
12
9
import org .reactivecommons .async .api .handlers .QueryHandler ;
10
+ import org .reactivecommons .async .api .handlers .QueryHandlerDelegate ;
13
11
import org .reactivecommons .async .api .handlers .registered .RegisteredCommandHandler ;
14
12
import org .reactivecommons .async .api .handlers .registered .RegisteredEventListener ;
15
13
import org .reactivecommons .async .api .handlers .registered .RegisteredQueryHandler ;
16
14
import reactor .core .publisher .Mono ;
17
15
16
+ import static org .assertj .core .api .Assertions .assertThat ;
17
+ import static org .mockito .Mockito .mock ;
18
+
18
19
public class HandlerRegistryTest {
19
20
20
21
private HandlerRegistry registry = HandlerRegistry .register ();
21
22
private String name = "some.event" ;
22
23
23
24
@ Test
24
- public void shouldListenEventWithTypeInferenceWhenClassInstanceIsUsed (){
25
+ public void shouldListenEventWithTypeInferenceWhenClassInstanceIsUsed () {
25
26
SomeEventHandler eventHandler = new SomeEventHandler ();
26
27
27
28
registry .listenEvent (name , eventHandler );
28
29
29
30
assertThat (registry .getEventListeners ()).anySatisfy (registered -> {
30
- assertThat (registered ).extracting (RegisteredEventListener ::getPath , RegisteredEventListener ::getInputClass , RegisteredEventListener ::getHandler )
31
- .containsExactly (name , SomeDataClass .class , eventHandler );
31
+ assertThat (registered ).extracting (RegisteredEventListener ::getPath ,
32
+ RegisteredEventListener ::getInputClass , RegisteredEventListener ::getHandler )
33
+ .containsExactly (name , SomeDataClass .class , eventHandler );
32
34
}).hasSize (1 );
33
35
}
34
36
@@ -39,8 +41,9 @@ public void listenEvent() {
39
41
registry .listenEvent (name , handler , SomeDataClass .class );
40
42
41
43
assertThat (registry .getEventListeners ()).anySatisfy (registered -> {
42
- assertThat (registered ).extracting (RegisteredEventListener ::getPath , RegisteredEventListener ::getInputClass , RegisteredEventListener ::getHandler )
43
- .containsExactly (name , SomeDataClass .class , handler );
44
+ assertThat (registered ).extracting (RegisteredEventListener ::getPath ,
45
+ RegisteredEventListener ::getInputClass , RegisteredEventListener ::getHandler )
46
+ .containsExactly (name , SomeDataClass .class , handler );
44
47
}).hasSize (1 );
45
48
}
46
49
@@ -51,8 +54,9 @@ public void handleCommandWithTypeInference() {
51
54
registry .handleCommand (name , handler );
52
55
53
56
assertThat (registry .getCommandHandlers ()).anySatisfy (registered -> {
54
- assertThat (registered ).extracting (RegisteredCommandHandler ::getPath , RegisteredCommandHandler ::getInputClass , RegisteredCommandHandler ::getHandler )
55
- .containsExactly (name , SomeDataClass .class , handler );
57
+ assertThat (registered ).extracting (RegisteredCommandHandler ::getPath ,
58
+ RegisteredCommandHandler ::getInputClass , RegisteredCommandHandler ::getHandler )
59
+ .containsExactly (name , SomeDataClass .class , handler );
56
60
}).hasSize (1 );
57
61
}
58
62
@@ -76,8 +80,9 @@ public void handleCommandWithLambda() {
76
80
registry .handleCommand (name , (Command <SomeDataClass > message ) -> Mono .empty (), SomeDataClass .class );
77
81
78
82
assertThat (registry .getCommandHandlers ()).anySatisfy (registered -> {
79
- assertThat (registered ).extracting (RegisteredCommandHandler ::getPath , RegisteredCommandHandler ::getInputClass )
80
- .containsExactly (name , SomeDataClass .class );
83
+ assertThat (registered ).extracting (RegisteredCommandHandler ::getPath ,
84
+ RegisteredCommandHandler ::getInputClass )
85
+ .containsExactly (name , SomeDataClass .class );
81
86
}).hasSize (1 );
82
87
}
83
88
@@ -87,7 +92,7 @@ public void serveQueryWithLambda() {
87
92
registry .serveQuery (name , message -> Mono .empty (), SomeDataClass .class );
88
93
assertThat (registry .getHandlers ()).anySatisfy (registered -> {
89
94
assertThat (registered ).extracting (RegisteredQueryHandler ::getPath , RegisteredQueryHandler ::getQueryClass )
90
- .containsExactly (name , SomeDataClass .class );
95
+ .containsExactly (name , SomeDataClass .class );
91
96
}).hasSize (1 );
92
97
}
93
98
@@ -96,11 +101,38 @@ public void serveQueryWithTypeInference() {
96
101
QueryHandler <SomeDataClass , SomeDataClass > handler = new SomeQueryHandler ();
97
102
registry .serveQuery (name , handler );
98
103
assertThat (registry .getHandlers ()).anySatisfy (registered -> {
99
- assertThat (registered ).extracting (RegisteredQueryHandler ::getPath , RegisteredQueryHandler ::getQueryClass , RegisteredQueryHandler ::getHandler )
100
- .containsExactly (name , SomeDataClass .class , handler );
104
+ assertThat (registered ).extracting (RegisteredQueryHandler ::getPath , RegisteredQueryHandler ::getQueryClass )
105
+ .containsExactly (name , SomeDataClass .class );
106
+ assertThat (registered ).extracting (RegisteredQueryHandler ::getHandler ).isInstanceOf (QueryHandlerDelegate .class );
107
+ }).hasSize (1 );
108
+ }
109
+
110
+ @ Test
111
+ public void serveQueryDelegate () {
112
+ QueryHandlerDelegate <Void , SomeDataClass > handler = new SomeQueryHandlerDelegate ();
113
+ registry .serveQuery (name , handler , SomeDataClass .class );
114
+ assertThat (registry .getHandlers ()).anySatisfy (registered -> {
115
+ assertThat (registered ).extracting (RegisteredQueryHandler ::getPath , RegisteredQueryHandler ::getQueryClass )
116
+ .containsExactly (name , SomeDataClass .class );
117
+ }).hasSize (1 );
118
+ }
119
+
120
+ @ Test
121
+ public void serveQueryDelegateWithLambda () {
122
+ registry .serveQuery (name , (from , message ) -> Mono .empty (), SomeDataClass .class );
123
+ assertThat (registry .getHandlers ()).anySatisfy (registered -> {
124
+ assertThat (registered ).extracting (RegisteredQueryHandler ::getPath , RegisteredQueryHandler ::getQueryClass )
125
+ .containsExactly (name , SomeDataClass .class );
101
126
}).hasSize (1 );
102
127
}
103
128
129
+ private static class SomeQueryHandlerDelegate implements QueryHandlerDelegate <Void , SomeDataClass > {
130
+ @ Override
131
+ public Mono <Void > handle (From from , SomeDataClass message ) {
132
+ return Mono .empty ();
133
+ }
134
+ }
135
+
104
136
private static class SomeEventHandler implements EventHandler <SomeDataClass > {
105
137
@ Override
106
138
public Mono <Void > handle (DomainEvent <SomeDataClass > message ) {
@@ -129,4 +161,4 @@ private static class SomeDataClass {
129
161
private Integer someProp2 ;
130
162
}
131
163
132
- }
164
+ }
0 commit comments