23
23
import static io .temporal .internal .statemachines .MutableSideEffectStateMachine .*;
24
24
import static io .temporal .internal .statemachines .SideEffectStateMachine .SIDE_EFFECT_MARKER_NAME ;
25
25
import static org .junit .Assert .*;
26
- import static org .junit .Assert .assertEquals ;
27
26
28
27
import com .google .protobuf .Any ;
29
28
import com .google .protobuf .InvalidProtocolBufferException ;
34
33
import io .temporal .api .enums .v1 .EventType ;
35
34
import io .temporal .api .history .v1 .*;
36
35
import io .temporal .api .protocol .v1 .Message ;
37
- import io .temporal .api .update .v1 .Input ;
38
- import io .temporal .api .update .v1 .Meta ;
39
- import io .temporal .api .update .v1 .Outcome ;
40
- import io .temporal .api .update .v1 .Request ;
36
+ import io .temporal .api .update .v1 .*;
41
37
import io .temporal .common .converter .DataConverter ;
42
38
import io .temporal .common .converter .DefaultDataConverter ;
43
39
import io .temporal .internal .common .ProtobufTimeUtils ;
@@ -84,7 +80,7 @@ public static void generateCoverage() {
84
80
}
85
81
86
82
@ Test
87
- public void testUpdateAccept () {
83
+ public void testUpdateAccept () throws InvalidProtocolBufferException {
88
84
class TestUpdateListener extends TestEntityManagerListenerBase {
89
85
90
86
@ Override
@@ -173,8 +169,31 @@ protected void update(UpdateMessage message, AsyncWorkflowBuilder<Void> builder)
173
169
{
174
170
TestEntityManagerListenerBase listener = new TestUpdateListener ();
175
171
stateMachines = newStateMachines (listener );
176
- List <Command > commands = h .handleWorkflowTaskTakeCommands (stateMachines , 0 );
177
- assertEquals (0 , commands .size ());
172
+ Request request =
173
+ Request .newBuilder ()
174
+ .setInput (
175
+ Input .newBuilder ()
176
+ .setName ("updateName" )
177
+ .setArgs (converter .toPayloads ("arg" ).get ()))
178
+ .build ();
179
+ stateMachines .setMessages (
180
+ Collections .unmodifiableList (
181
+ Arrays .asList (
182
+ new Message [] {
183
+ Message .newBuilder ()
184
+ .setProtocolInstanceId ("protocol_id" )
185
+ .setId ("id" )
186
+ .setEventId (0 )
187
+ .setBody (Any .pack (request ))
188
+ .build (),
189
+ })));
190
+ List <Command > commands = h .handleWorkflowTaskTakeCommands (stateMachines , 1 );
191
+ assertEquals (2 , commands .size ());
192
+ List <Message > messages = stateMachines .takeMessages ();
193
+ assertEquals (1 , messages .size ());
194
+ Acceptance acceptance = messages .get (0 ).getBody ().unpack (Acceptance .class );
195
+ assertNotNull (acceptance );
196
+ assertEquals (request , acceptance .getAcceptedRequest ());
178
197
}
179
198
{
180
199
TestEntityManagerListenerBase listener = new TestUpdateListener ();
@@ -369,7 +388,7 @@ protected void update(UpdateMessage message, AsyncWorkflowBuilder<Void> builder)
369
388
}
370
389
371
390
@ Test
372
- public void testUpdateRejected () {
391
+ public void testUpdateRejected () throws InvalidProtocolBufferException {
373
392
class TestUpdateListener extends TestEntityManagerListenerBase {
374
393
375
394
@ Override
@@ -404,14 +423,13 @@ protected void update(UpdateMessage message, AsyncWorkflowBuilder<Void> builder)
404
423
// Full replay
405
424
TestEntityManagerListenerBase listener = new TestUpdateListener ();
406
425
stateMachines = newStateMachines (listener );
407
- Any messageBody =
408
- Any .pack (
409
- Request .newBuilder ()
410
- .setInput (
411
- Input .newBuilder ()
412
- .setName ("updateName" )
413
- .setArgs (converter .toPayloads ("arg" ).get ()))
414
- .build ());
426
+ Request request =
427
+ Request .newBuilder ()
428
+ .setInput (
429
+ Input .newBuilder ()
430
+ .setName ("updateName" )
431
+ .setArgs (converter .toPayloads ("arg" ).get ()))
432
+ .build ();
415
433
stateMachines .setMessages (
416
434
Collections .unmodifiableList (
417
435
Arrays .asList (
@@ -420,11 +438,16 @@ protected void update(UpdateMessage message, AsyncWorkflowBuilder<Void> builder)
420
438
.setProtocolInstanceId ("protocol_id" )
421
439
.setId ("id" )
422
440
.setEventId (0 )
423
- .setBody (messageBody )
441
+ .setBody (Any . pack ( request ) )
424
442
.build (),
425
443
})));
426
444
List <Command > commands = h .handleWorkflowTaskTakeCommands (stateMachines , 1 );
427
445
assertEquals (0 , commands .size ());
446
+ List <Message > messages = stateMachines .takeMessages ();
447
+ assertEquals (1 , messages .size ());
448
+ Rejection rejection = messages .get (0 ).getBody ().unpack (Rejection .class );
449
+ assertNotNull (rejection );
450
+ assertEquals (request , rejection .getRejectedRequest ());
428
451
}
429
452
}
430
453
0 commit comments