@@ -3702,6 +3702,88 @@ public async Task ProcessTaskUpdate_ValidTaskUpdateEventWithExportHl7TaskDestina
3702
3702
response . Should ( ) . BeTrue ( ) ;
3703
3703
}
3704
3704
3705
+ [ Fact ]
3706
+ public async Task ProcessTaskUpdate_ValidTaskUpdateEventWith_Same_Status_returns_true ( )
3707
+ {
3708
+ var workflowInstanceId = Guid . NewGuid ( ) . ToString ( ) ;
3709
+ var taskId = Guid . NewGuid ( ) . ToString ( ) ;
3710
+
3711
+ var updateEvent = new TaskUpdateEvent
3712
+ {
3713
+ WorkflowInstanceId = workflowInstanceId ,
3714
+ TaskId = "pizza" ,
3715
+ ExecutionId = Guid . NewGuid ( ) . ToString ( ) ,
3716
+ Status = TaskExecutionStatus . Succeeded ,
3717
+ } ;
3718
+
3719
+ var workflowId = Guid . NewGuid ( ) . ToString ( ) ;
3720
+
3721
+ var workflow = new WorkflowRevision
3722
+ {
3723
+ Id = Guid . NewGuid ( ) . ToString ( ) ,
3724
+ WorkflowId = workflowId ,
3725
+ Revision = 1 ,
3726
+ Workflow = new Workflow
3727
+ {
3728
+ Name = "Workflowname2" ,
3729
+ Description = "Workflowdesc2" ,
3730
+ Version = "1" ,
3731
+ InformaticsGateway = new InformaticsGateway
3732
+ {
3733
+ AeTitle = "aetitle"
3734
+ } ,
3735
+ Tasks = new TaskObject [ ]
3736
+ {
3737
+ new TaskObject {
3738
+ Id = "pizza" ,
3739
+ Type = "type" ,
3740
+ Description = "taskdesc" ,
3741
+ TaskDestinations = new TaskDestination [ ]
3742
+ {
3743
+ new TaskDestination
3744
+ {
3745
+ Name = "exporttaskid"
3746
+ } ,
3747
+ }
3748
+ }
3749
+ }
3750
+ }
3751
+ } ;
3752
+
3753
+ var workflowInstance = new WorkflowInstance
3754
+ {
3755
+ Id = workflowInstanceId ,
3756
+ WorkflowId = workflowId ,
3757
+ WorkflowName = workflow . Workflow . Name ,
3758
+ PayloadId = Guid . NewGuid ( ) . ToString ( ) ,
3759
+ Status = Status . Created ,
3760
+ BucketId = "bucket" ,
3761
+ Tasks = new List < TaskExecution >
3762
+ {
3763
+ new TaskExecution
3764
+ {
3765
+ TaskId = "pizza" ,
3766
+ Status = TaskExecutionStatus . Succeeded
3767
+ }
3768
+ }
3769
+ } ;
3770
+
3771
+ _workflowInstanceRepository . Setup ( w => w . UpdateTaskStatusAsync ( It . IsAny < string > ( ) , It . IsAny < string > ( ) , It . IsAny < TaskExecutionStatus > ( ) ) ) . ReturnsAsync ( true ) ;
3772
+ _workflowInstanceRepository . Setup ( w => w . GetByWorkflowInstanceIdAsync ( workflowInstance . Id ) ) . ReturnsAsync ( workflowInstance ) ;
3773
+ _workflowInstanceRepository . Setup ( w => w . UpdateTasksAsync ( workflowInstance . Id , It . IsAny < List < TaskExecution > > ( ) ) ) . ReturnsAsync ( true ) ;
3774
+ _workflowRepository . Setup ( w => w . GetByWorkflowIdAsync ( workflowInstance . WorkflowId ) ) . ReturnsAsync ( workflow ) ;
3775
+ _payloadService . Setup ( p => p . GetByIdAsync ( It . IsAny < string > ( ) ) ) . ReturnsAsync ( new Payload { PatientDetails = new PatientDetails { } } ) ;
3776
+ _artifactMapper . Setup ( a => a . ConvertArtifactVariablesToPath ( It . IsAny < Artifact [ ] > ( ) , It . IsAny < string > ( ) , It . IsAny < string > ( ) , It . IsAny < string > ( ) , It . IsAny < bool > ( ) ) ) . ReturnsAsync ( new Dictionary < string , string > { { "dicomexport" , "/dcm" } } ) ;
3777
+
3778
+ var response = await WorkflowExecuterService . ProcessTaskUpdate ( updateEvent ) ;
3779
+
3780
+ _messageBrokerPublisherService . Verify ( w => w . Publish ( _configuration . Value . Messaging . Topics . ExportHL7 , It . IsAny < Message > ( ) ) , Times . Exactly ( 0 ) ) ;
3781
+
3782
+ _logger . Verify ( logger => logger . IsEnabled ( LogLevel . Trace ) , Times . Once ) ;
3783
+
3784
+ response . Should ( ) . BeTrue ( ) ;
3785
+ }
3786
+
3705
3787
[ Fact ]
3706
3788
public async Task ProcessPayload_With_Multiple_Taskdestinations_One_Has_Inputs ( )
3707
3789
{
@@ -3977,6 +4059,62 @@ public async Task ProcessPayload_With_Passing_Workflow_Conditional_Should_Procce
3977
4059
3978
4060
Assert . True ( result ) ;
3979
4061
}
4062
+
4063
+ [ Fact ]
4064
+ public async Task ProcessPayload_With_Empty_Workflow_Conditional_Should_Procced ( )
4065
+ {
4066
+ var workflowRequest = new WorkflowRequestEvent
4067
+ {
4068
+ Bucket = "testbucket" ,
4069
+ DataTrigger = new DataOrigin { Source = "aetitle" , Destination = "aetitle" } ,
4070
+ CorrelationId = Guid . NewGuid ( ) . ToString ( ) ,
4071
+ Timestamp = DateTime . UtcNow
4072
+ } ;
4073
+
4074
+ var workflows = new List < WorkflowRevision >
4075
+ {
4076
+ new ( ) {
4077
+ Id = Guid . NewGuid ( ) . ToString ( ) ,
4078
+ WorkflowId = Guid . NewGuid ( ) . ToString ( ) ,
4079
+ Revision = 1 ,
4080
+ Workflow = new Workflow
4081
+ {
4082
+ Name = "Workflowname" ,
4083
+ Description = "Workflowdesc" ,
4084
+ Version = "1" ,
4085
+ InformaticsGateway = new InformaticsGateway
4086
+ {
4087
+ AeTitle = "aetitle"
4088
+ } ,
4089
+ Tasks =
4090
+ [
4091
+ new TaskObject {
4092
+ Id = Guid . NewGuid ( ) . ToString ( ) ,
4093
+ Type = "type" ,
4094
+ Description = "taskdesc"
4095
+ }
4096
+ ] ,
4097
+ Predicate = [ ]
4098
+ }
4099
+ }
4100
+ } ;
4101
+
4102
+ _dicom . Setup ( w => w . GetAnyValueAsync ( It . IsAny < string > ( ) , It . IsAny < string > ( ) , It . IsAny < string > ( ) ) )
4103
+ . ReturnsAsync ( ( ) => "lordge" ) ;
4104
+
4105
+ _workflowRepository . Setup ( w => w . GetWorkflowsByAeTitleAsync ( It . IsAny < List < string > > ( ) ) ) . ReturnsAsync ( workflows ) ;
4106
+ _workflowRepository . Setup ( w => w . GetWorkflowsForWorkflowRequestAsync ( It . IsAny < string > ( ) , It . IsAny < string > ( ) ) ) . ReturnsAsync ( workflows ) ;
4107
+ _workflowRepository . Setup ( w => w . GetByWorkflowIdAsync ( workflows [ 0 ] . WorkflowId ) ) . ReturnsAsync ( workflows [ 0 ] ) ;
4108
+ _workflowInstanceRepository . Setup ( w => w . CreateAsync ( It . IsAny < List < WorkflowInstance > > ( ) ) ) . ReturnsAsync ( true ) ;
4109
+ _workflowInstanceRepository . Setup ( w => w . GetByWorkflowsIdsAsync ( It . IsAny < List < string > > ( ) ) ) . ReturnsAsync ( new List < WorkflowInstance > ( ) ) ;
4110
+ _workflowInstanceRepository . Setup ( w => w . UpdateTaskStatusAsync ( It . IsAny < string > ( ) , It . IsAny < string > ( ) , It . IsAny < TaskExecutionStatus > ( ) ) ) . ReturnsAsync ( true ) ;
4111
+
4112
+ var result = await WorkflowExecuterService . ProcessPayload ( workflowRequest , new Payload ( ) { Id = Guid . NewGuid ( ) . ToString ( ) } ) ;
4113
+
4114
+ _messageBrokerPublisherService . Verify ( w => w . Publish ( _configuration . Value . Messaging . Topics . TaskDispatchRequest , It . IsAny < Message > ( ) ) , Times . Once ( ) ) ;
4115
+
4116
+ Assert . True ( result ) ;
4117
+ }
3980
4118
}
3981
4119
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
3982
4120
}
0 commit comments