Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/WorkflowManager/Common/Services/PayloadService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ private async Task<IList<PayloadDto>> CreatePayloadsDto(IList<Payload> payloads)
return dtos;
}

var payloadIds = payloads.Select(payload => payload.Id).ToList();
var payloadIds = payloads.Select(payload => payload.PayloadId).ToList();

var workflowInstances =
await _workflowInstanceRepository.GetByPayloadIdsAsync(payloadIds);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,37 @@ Scenario: Get all payloads from API - no payloads
Then I will get a 200 response
And I can see no Payloads are returned

@GetPayloads
Scenario: Get all payloads from API - Workflow Instances Created - PayloadStatus InProgress
Given I have an endpoint /payload
And I have a payload saved in mongo Payload_PayloadStatus_1
And I have a Workflow Instance Workflow_Instance_For_PayloadData_Payload_PayloadStatus_1_1 with no artifacts
And I have a Workflow Instance Workflow_Instance_For_PayloadData_Payload_PayloadStatus_1_2 with no artifacts
When I send a GET request
Then I will get a 200 response
And I can see expected Payloads are returned with PayloadStatus InProgress

@GetPayloads
Scenario: Get all payloads from API - Workflow Instances Succeeded and Failed - PayloadStatus Complete
Given I have an endpoint /payload
And I have a payload saved in mongo Payload_PayloadStatus_2
And I have a Workflow Instance Workflow_Instance_For_PayloadData_Payload_PayloadStatus_2_1 with no artifacts
And I have a Workflow Instance Workflow_Instance_For_PayloadData_Payload_PayloadStatus_2_2 with no artifacts
When I send a GET request
Then I will get a 200 response
And I can see expected Payloads are returned with PayloadStatus Complete

@GetPayloads
Scenario: Get all payloads from API - Workflow Instances Succeeded, Failed, and Created - PayloadStatus InProgress
Given I have an endpoint /payload
And I have a payload saved in mongo Payload_PayloadStatus_3
And I have a Workflow Instance Workflow_Instance_For_PayloadData_Payload_PayloadStatus_3_1 with no artifacts
And I have a Workflow Instance Workflow_Instance_For_PayloadData_Payload_PayloadStatus_3_2 with no artifacts
And I have a Workflow Instance Workflow_Instance_For_PayloadData_Payload_PayloadStatus_3_3 with no artifacts
When I send a GET request
Then I will get a 200 response
And I can see expected Payloads are returned with PayloadStatus InProgress

@PayloadSearch
Scenario Outline: Get all payloads from API - Test search query parameters
Given I have an endpoint /payload/<search_query>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,33 @@ public void ThenICanSeeExpectedPayloadsAreReturned()
Assertions.AssertPayloadList(DataHelper.Payload, actualPayloads?.Data);
}

[Then(@"I can see expected Payloads are returned with PayloadStatus (.*)")]
public void ThenICanSeeExpectedPayloadsAreReturnedWithPayloadStatus(string payloadStatus)
{
PayloadStatus status;

switch (payloadStatus)
{
case "InProgress":
status = PayloadStatus.InProgress;
break;
case "Complete":
status = PayloadStatus.Complete;
break;
default:
throw new Exception($"Invalid payload status '{payloadStatus}'. Must be one of: InProgress, Complete");
}

var result = ApiHelper.Response.Content.ReadAsStringAsync().Result;

var actualPayloads = JsonConvert.DeserializeObject<PagedResponse<List<PayloadDto>>>(result);
actualPayloads.Should().NotBeNull();
Assertions.AssertPayloadListWithPayloadStatus(
DataHelper.Payload.Select(p => new PayloadDto(p)).ToList(),
actualPayloads?.Data,
status);
}

[Then(@"Search is working correctly for the (.*) payload")]
[Then(@"Search is working correctly for the (.*) payloads")]
public void ThenSearchIsWorkingCorrectlyForThepayloads(int count)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,20 @@ public void AssertPayloadList(List<Payload> payload, List<Payload>? actualPayloa
}
}

public void AssertPayloadListWithPayloadStatus(List<PayloadDto> payload, List<PayloadDto>? actualPayloads, PayloadStatus payloadStatus)
{
actualPayloads.Should().NotBeNull();
actualPayloads?.Count.Should().Be(payload.Count);

foreach (var p in payload)
{
var actualPayload = actualPayloads?.FirstOrDefault(x => x.PayloadId.Equals(p.PayloadId));

AssertPayload(p, actualPayload);
actualPayload?.PayloadStatus.Should().Be(payloadStatus);
}
}

public void AssertPayloadCollection(Payload payloadCollection, PatientDetails patientDetails, WorkflowRequestMessage workflowRequestMessage)
{
payloadCollection.PayloadId.Should().Be(workflowRequestMessage.PayloadId.ToString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,78 @@ public static class PayloadsTestData
PatientSex = "male"
}
}
},
new PayloadTestData()
{
Name = "Payload_PayloadStatus_1",
Payload = new Payload()
{
Id = Guid.NewGuid().ToString(),
Timestamp = DateTime.UtcNow,
Bucket = "bucket_1",
CalledAeTitle = "MIG",
CallingAeTitle = "Basic_AE",
CorrelationId = Guid.NewGuid().ToString(),
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c1",
Workflows = new List<string> { Guid.NewGuid().ToString() },
FileCount = 50,
PayloadDeleted = PayloadDeleted.No,
PatientDetails = new PatientDetails()
{
PatientDob = new DateTime(1996, 02, 05, 0, 0, 0, kind: DateTimeKind.Utc),
PatientId = Guid.NewGuid().ToString(),
PatientName = "Mike Mcgee",
PatientSex = "male"
}
}
},
new PayloadTestData()
{
Name = "Payload_PayloadStatus_2",
Payload = new Payload()
{
Id = Guid.NewGuid().ToString(),
Timestamp = DateTime.UtcNow,
Bucket = "bucket_1",
CalledAeTitle = "MIG",
CallingAeTitle = "Basic_AE",
CorrelationId = Guid.NewGuid().ToString(),
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c2",
Workflows = new List<string> { Guid.NewGuid().ToString() },
FileCount = 50,
PayloadDeleted = PayloadDeleted.No,
PatientDetails = new PatientDetails()
{
PatientDob = new DateTime(1996, 02, 05, 0, 0, 0, kind: DateTimeKind.Utc),
PatientId = Guid.NewGuid().ToString(),
PatientName = "Mike Mcgee",
PatientSex = "male"
}
}
},
new PayloadTestData()
{
Name = "Payload_PayloadStatus_3",
Payload = new Payload()
{
Id = Guid.NewGuid().ToString(),
Timestamp = DateTime.UtcNow,
Bucket = "bucket_1",
CalledAeTitle = "MIG",
CallingAeTitle = "Basic_AE",
CorrelationId = Guid.NewGuid().ToString(),
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c3",
Workflows = new List<string> { Guid.NewGuid().ToString() },
FileCount = 50,
PayloadDeleted = PayloadDeleted.No,
PatientDetails = new PatientDetails()
{
PatientDob = new DateTime(1996, 02, 05, 0, 0, 0, kind: DateTimeKind.Utc),
PatientId = Guid.NewGuid().ToString(),
PatientName = "Mike Mcgee",
PatientSex = "male"
}
}
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2008,6 +2008,209 @@ public static WorkflowInstance CreateWorkflowInstance(string workflowName)
}
}
},
new WorkflowInstanceTestData()
{
Name = "Workflow_Instance_For_PayloadData_Payload_PayloadStatus_1_1",
WorkflowInstance = new WorkflowInstance()
{
Id = Guid.NewGuid().ToString(),
AeTitle = "Multi_Req",
WorkflowId = Helper.GetWorkflowByName("Multi_Request_Workflow_Created")?.WorkflowRevision?.WorkflowId ?? "",
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c1",
BucketId = "bucket1",
StartTime = DateTime.UtcNow,
Status = Status.Created,
InputMetaData = new Dictionary<string, string>()
{
{ "", "" }
},
Tasks = new List<TaskExecution>
{
new TaskExecution()
{
ExecutionId = "d32d5769-4ecf-4639-a048-6ecf2cced04a",
TaskId = "First_Task",
OutputDirectory = "payloadId/workflows/workflowInstanceId/executionId/",
TaskType = "Multi_task",
Status = TaskExecutionStatus.Failed,
}
}
}
},
new WorkflowInstanceTestData()
{
Name = "Workflow_Instance_For_PayloadData_Payload_PayloadStatus_1_2",
WorkflowInstance = new WorkflowInstance()
{
Id = Guid.NewGuid().ToString(),
AeTitle = "Multi_Req",
WorkflowId = Helper.GetWorkflowByName("Multi_Request_Workflow_Created")?.WorkflowRevision?.WorkflowId ?? "",
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c1",
BucketId = "bucket1",
StartTime = DateTime.UtcNow,
Status = Status.Created,
InputMetaData = new Dictionary<string, string>()
{
{ "", "" }
},
Tasks = new List<TaskExecution>
{
new TaskExecution()
{
ExecutionId = "d32d5769-4ecf-4639-a048-6ecf2cced04a",
TaskId = "First_Task",
OutputDirectory = "payloadId/workflows/workflowInstanceId/executionId/",
TaskType = "Multi_task",
Status = TaskExecutionStatus.Failed,
}
}
}
},
new WorkflowInstanceTestData()
{
Name = "Workflow_Instance_For_PayloadData_Payload_PayloadStatus_2_1",
WorkflowInstance = new WorkflowInstance()
{
Id = Guid.NewGuid().ToString(),
AeTitle = "Multi_Req",
WorkflowId = Helper.GetWorkflowByName("Multi_Request_Workflow_Created")?.WorkflowRevision?.WorkflowId ?? "",
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c2",
BucketId = "bucket1",
StartTime = DateTime.UtcNow,
Status = Status.Succeeded,
InputMetaData = new Dictionary<string, string>()
{
{ "", "" }
},
Tasks = new List<TaskExecution>
{
new TaskExecution()
{
ExecutionId = "d32d5769-4ecf-4639-a048-6ecf2cced04a",
TaskId = "First_Task",
OutputDirectory = "payloadId/workflows/workflowInstanceId/executionId/",
TaskType = "Multi_task",
Status = TaskExecutionStatus.Failed,
}
}
}
},
new WorkflowInstanceTestData()
{
Name = "Workflow_Instance_For_PayloadData_Payload_PayloadStatus_2_2",
WorkflowInstance = new WorkflowInstance()
{
Id = Guid.NewGuid().ToString(),
AeTitle = "Multi_Req",
WorkflowId = Helper.GetWorkflowByName("Multi_Request_Workflow_Created")?.WorkflowRevision?.WorkflowId ?? "",
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c2",
BucketId = "bucket1",
StartTime = DateTime.UtcNow,
Status = Status.Failed,
InputMetaData = new Dictionary<string, string>()
{
{ "", "" }
},
Tasks = new List<TaskExecution>
{
new TaskExecution()
{
ExecutionId = "d32d5769-4ecf-4639-a048-6ecf2cced04a",
TaskId = "First_Task",
OutputDirectory = "payloadId/workflows/workflowInstanceId/executionId/",
TaskType = "Multi_task",
Status = TaskExecutionStatus.Failed,
}
}
}
},
new WorkflowInstanceTestData()
{
Name = "Workflow_Instance_For_PayloadData_Payload_PayloadStatus_3_1",
WorkflowInstance = new WorkflowInstance()
{
Id = Guid.NewGuid().ToString(),
AeTitle = "Multi_Req",
WorkflowId = Helper.GetWorkflowByName("Multi_Request_Workflow_Created")?.WorkflowRevision?.WorkflowId ?? "",
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c3",
BucketId = "bucket1",
StartTime = DateTime.UtcNow,
Status = Status.Created,
InputMetaData = new Dictionary<string, string>()
{
{ "", "" }
},
Tasks = new List<TaskExecution>
{
new TaskExecution()
{
ExecutionId = "d32d5769-4ecf-4639-a048-6ecf2cced04a",
TaskId = "First_Task",
OutputDirectory = "payloadId/workflows/workflowInstanceId/executionId/",
TaskType = "Multi_task",
Status = TaskExecutionStatus.Failed,
}
}
}
},
new WorkflowInstanceTestData()
{
Name = "Workflow_Instance_For_PayloadData_Payload_PayloadStatus_3_2",
WorkflowInstance = new WorkflowInstance()
{
Id = Guid.NewGuid().ToString(),
AeTitle = "Multi_Req",
WorkflowId = Helper.GetWorkflowByName("Multi_Request_Workflow_Created")?.WorkflowRevision?.WorkflowId ?? "",
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c3",
BucketId = "bucket1",
StartTime = DateTime.UtcNow,
Status = Status.Succeeded,
InputMetaData = new Dictionary<string, string>()
{
{ "", "" }
},
Tasks = new List<TaskExecution>
{
new TaskExecution()
{
ExecutionId = "d32d5769-4ecf-4639-a048-6ecf2cced04a",
TaskId = "First_Task",
OutputDirectory = "payloadId/workflows/workflowInstanceId/executionId/",
TaskType = "Multi_task",
Status = TaskExecutionStatus.Failed,
}
}
}
},
new WorkflowInstanceTestData()
{
Name = "Workflow_Instance_For_PayloadData_Payload_PayloadStatus_3_3",
WorkflowInstance = new WorkflowInstance()
{
Id = Guid.NewGuid().ToString(),
AeTitle = "Multi_Req",
WorkflowId = Helper.GetWorkflowByName("Multi_Request_Workflow_Created")?.WorkflowRevision?.WorkflowId ?? "",
PayloadId = "a5c3633b-31dd-44c9-8a1a-71adec3d47c3",
BucketId = "bucket1",
StartTime = DateTime.UtcNow,
Status = Status.Failed,
InputMetaData = new Dictionary<string, string>()
{
{ "", "" }
},
Tasks = new List<TaskExecution>
{
new TaskExecution()
{
ExecutionId = "d32d5769-4ecf-4639-a048-6ecf2cced04a",
TaskId = "First_Task",
OutputDirectory = "payloadId/workflows/workflowInstanceId/executionId/",
TaskType = "Multi_task",
Status = TaskExecutionStatus.Failed,
}
}
}
},
};
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ public async Task GetAll_ReturnsPayloads()
p.GetAllAsync(
It.IsAny<int?>(), It.IsAny<int?>(), It.IsAny<string>(), It.IsAny<string>())
).ReturnsAsync(() => input);
var param = input.Select(i => i.Id).ToList();
var param = input.Select(i => i.PayloadId).ToList();
_workflowInstanceRepository.Setup(r =>
r.GetByPayloadIdsAsync(param)
).ReturnsAsync(() =>
Expand Down