@@ -3702,6 +3702,88 @@ public async Task ProcessTaskUpdate_ValidTaskUpdateEventWithExportHl7TaskDestina
37023702 response . Should ( ) . BeTrue ( ) ;
37033703 }
37043704
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+
37053787 [ Fact ]
37063788 public async Task ProcessPayload_With_Multiple_Taskdestinations_One_Has_Inputs ( )
37073789 {
@@ -3977,6 +4059,62 @@ public async Task ProcessPayload_With_Passing_Workflow_Conditional_Should_Procce
39774059
39784060 Assert . True ( result ) ;
39794061 }
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+ }
39804118 }
39814119#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
39824120}
0 commit comments