11package org .reactivecommons .async .api ;
22
3- import static org .assertj .core .api .Assertions .*;
4- import static org .mockito .Mockito .*;
5-
63import lombok .Data ;
74import org .junit .Test ;
85import org .reactivecommons .api .domain .Command ;
96import org .reactivecommons .api .domain .DomainEvent ;
107import org .reactivecommons .async .api .handlers .CommandHandler ;
118import org .reactivecommons .async .api .handlers .EventHandler ;
129import org .reactivecommons .async .api .handlers .QueryHandler ;
10+ import org .reactivecommons .async .api .handlers .QueryHandlerDelegate ;
1311import org .reactivecommons .async .api .handlers .registered .RegisteredCommandHandler ;
1412import org .reactivecommons .async .api .handlers .registered .RegisteredEventListener ;
1513import org .reactivecommons .async .api .handlers .registered .RegisteredQueryHandler ;
1614import reactor .core .publisher .Mono ;
1715
16+ import static org .assertj .core .api .Assertions .assertThat ;
17+ import static org .mockito .Mockito .mock ;
18+
1819public class HandlerRegistryTest {
1920
2021 private HandlerRegistry registry = HandlerRegistry .register ();
2122 private String name = "some.event" ;
2223
2324 @ Test
24- public void shouldListenEventWithTypeInferenceWhenClassInstanceIsUsed (){
25+ public void shouldListenEventWithTypeInferenceWhenClassInstanceIsUsed () {
2526 SomeEventHandler eventHandler = new SomeEventHandler ();
2627
2728 registry .listenEvent (name , eventHandler );
2829
2930 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 );
3234 }).hasSize (1 );
3335 }
3436
@@ -39,8 +41,9 @@ public void listenEvent() {
3941 registry .listenEvent (name , handler , SomeDataClass .class );
4042
4143 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 );
4447 }).hasSize (1 );
4548 }
4649
@@ -51,8 +54,9 @@ public void handleCommandWithTypeInference() {
5154 registry .handleCommand (name , handler );
5255
5356 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 );
5660 }).hasSize (1 );
5761 }
5862
@@ -76,8 +80,9 @@ public void handleCommandWithLambda() {
7680 registry .handleCommand (name , (Command <SomeDataClass > message ) -> Mono .empty (), SomeDataClass .class );
7781
7882 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 );
8186 }).hasSize (1 );
8287 }
8388
@@ -87,7 +92,7 @@ public void serveQueryWithLambda() {
8792 registry .serveQuery (name , message -> Mono .empty (), SomeDataClass .class );
8893 assertThat (registry .getHandlers ()).anySatisfy (registered -> {
8994 assertThat (registered ).extracting (RegisteredQueryHandler ::getPath , RegisteredQueryHandler ::getQueryClass )
90- .containsExactly (name , SomeDataClass .class );
95+ .containsExactly (name , SomeDataClass .class );
9196 }).hasSize (1 );
9297 }
9398
@@ -96,11 +101,38 @@ public void serveQueryWithTypeInference() {
96101 QueryHandler <SomeDataClass , SomeDataClass > handler = new SomeQueryHandler ();
97102 registry .serveQuery (name , handler );
98103 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 );
101126 }).hasSize (1 );
102127 }
103128
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+
104136 private static class SomeEventHandler implements EventHandler <SomeDataClass > {
105137 @ Override
106138 public Mono <Void > handle (DomainEvent <SomeDataClass > message ) {
@@ -129,4 +161,4 @@ private static class SomeDataClass {
129161 private Integer someProp2 ;
130162 }
131163
132- }
164+ }
0 commit comments