Skip to content

Commit 91e6bd3

Browse files
add tests
Signed-off-by: Jack Schofield <[email protected]>
1 parent b462ea3 commit 91e6bd3

File tree

4 files changed

+160
-5
lines changed

4 files changed

+160
-5
lines changed

src/Monai.Deploy.WorkflowManager.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Monai.Deploy.WorkflowManage
6363
EndProject
6464
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview", "TaskManager\Plug-ins\AideClinicalReview\Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview.csproj", "{013395D4-2091-4AB8-96CB-867C0F982096}"
6565
EndProject
66+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TaskManager.AideClinicalReview.Tests", "..\tests\UnitTests\TaskManager.AideClinicalReview.Tests\TaskManager.AideClinicalReview.Tests.csproj", "{57D00445-0798-4D86-97D4-1586E1B020BC}"
67+
EndProject
6668
Global
6769
GlobalSection(SolutionConfigurationPlatforms) = preSolution
6870
Debug|Any CPU = Debug|Any CPU
@@ -181,6 +183,10 @@ Global
181183
{013395D4-2091-4AB8-96CB-867C0F982096}.Debug|Any CPU.Build.0 = Debug|Any CPU
182184
{013395D4-2091-4AB8-96CB-867C0F982096}.Release|Any CPU.ActiveCfg = Release|Any CPU
183185
{013395D4-2091-4AB8-96CB-867C0F982096}.Release|Any CPU.Build.0 = Release|Any CPU
186+
{57D00445-0798-4D86-97D4-1586E1B020BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
187+
{57D00445-0798-4D86-97D4-1586E1B020BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
188+
{57D00445-0798-4D86-97D4-1586E1B020BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
189+
{57D00445-0798-4D86-97D4-1586E1B020BC}.Release|Any CPU.Build.0 = Release|Any CPU
184190
EndGlobalSection
185191
GlobalSection(SolutionProperties) = preSolution
186192
HideSolutionNode = FALSE
@@ -203,6 +209,7 @@ Global
203209
{A44F975E-70CA-49D6-8513-78F2D5210EAF} = {71DDEE7B-E213-4E39-A7F4-4646783A27F7}
204210
{722C0D57-49F8-4178-88F0-06E369B797A3} = {71DDEE7B-E213-4E39-A7F4-4646783A27F7}
205211
{013395D4-2091-4AB8-96CB-867C0F982096} = {78B0EB6E-2636-48A7-8FDB-4334C3F3FFF1}
212+
{57D00445-0798-4D86-97D4-1586E1B020BC} = {71DDEE7B-E213-4E39-A7F4-4646783A27F7}
206213
EndGlobalSection
207214
GlobalSection(ExtensibilityGlobals) = postSolution
208215
SolutionGuid = {DC0D56C8-D8CB-45CE-B528-F3DCF86D63ED}

src/TaskManager/Plug-ins/AideClinicalReview/AideClinicalReviewPlugin.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
using Ardalis.GuardClauses;
22
using Microsoft.Extensions.DependencyInjection;
33
using Microsoft.Extensions.Logging;
4-
using Microsoft.Extensions.Options;
54
using Monai.Deploy.Messaging.API;
65
using Monai.Deploy.Messaging.Events;
76
using Monai.Deploy.Messaging.Messages;
8-
using Monai.Deploy.WorkflowManager.Configuration;
97
using Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview;
108
using Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview.Events;
119
using Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview.Logging;
@@ -19,7 +17,6 @@ public class AideClinicalReviewPlugin : TaskPluginBase, IAsyncDisposable
1917
private const string TaskManagerApplicationId = "4c9072a1-35f5-4d85-847d-dafca22244a8";
2018
private readonly IServiceScope _scope;
2119
private readonly ILogger<AideClinicalReviewPlugin> _logger;
22-
private readonly IOptions<WorkflowManagerOptions> _options;
2320
private readonly IMessageBrokerPublisherService? _messageBrokerPublisherService;
2421

2522
private string _patientId;
@@ -32,7 +29,6 @@ public class AideClinicalReviewPlugin : TaskPluginBase, IAsyncDisposable
3229
public AideClinicalReviewPlugin(
3330
IServiceScopeFactory serviceScopeFactory,
3431
IMessageBrokerPublisherService messageBrokerPublisherService,
35-
IOptions<WorkflowManagerOptions> options,
3632
ILogger<AideClinicalReviewPlugin> logger,
3733
TaskDispatchEvent taskDispatchEvent)
3834
: base(taskDispatchEvent)
@@ -42,7 +38,6 @@ public AideClinicalReviewPlugin(
4238
_scope = serviceScopeFactory.CreateScope();
4339

4440
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
45-
_options = options ?? throw new ArgumentNullException(nameof(options));
4641
_messageBrokerPublisherService = messageBrokerPublisherService ?? throw new ArgumentNullException(nameof(messageBrokerPublisherService));
4742

4843
ValidateEventAndInit();
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
using AideClinicalReview;
2+
using Microsoft.Extensions.DependencyInjection;
3+
using Microsoft.Extensions.Logging;
4+
using Monai.Deploy.Messaging.API;
5+
using Monai.Deploy.Messaging.Events;
6+
using Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview;
7+
using Monai.Deploy.WorkflowManager.TaskManager.API;
8+
using Monai.Deploy.Messaging.Common;
9+
using Moq;
10+
using Xunit;
11+
12+
namespace TaskManager.AideClinicalReview.Tests
13+
{
14+
public class AideClinicalReviewPluginTests
15+
{
16+
private readonly Mock<ILogger<AideClinicalReviewPlugin>> _logger;
17+
private readonly Mock<IMessageBrokerPublisherService> _messageBrokerPublisherService;
18+
private readonly Mock<IServiceScopeFactory> _serviceScopeFactory;
19+
private readonly Mock<IServiceScope> _serviceScope;
20+
21+
public AideClinicalReviewPluginTests()
22+
{
23+
_logger = new Mock<ILogger<AideClinicalReviewPlugin>>();
24+
_messageBrokerPublisherService = new Mock<IMessageBrokerPublisherService>();
25+
_serviceScopeFactory = new Mock<IServiceScopeFactory>();
26+
_serviceScope = new Mock<IServiceScope>();
27+
28+
_serviceScopeFactory.Setup(p => p.CreateScope()).Returns(_serviceScope.Object);
29+
30+
var serviceProvider = new Mock<IServiceProvider>();
31+
32+
_serviceScope.Setup(x => x.ServiceProvider).Returns(serviceProvider.Object);
33+
34+
_logger.Setup(p => p.IsEnabled(It.IsAny<LogLevel>())).Returns(true);
35+
}
36+
37+
[Fact(DisplayName = "Throws when missing required plug-in arguments")]
38+
public void AideClinicalReviewPlugin_ThrowsWhenMissingPluginArguments()
39+
{
40+
var message = GenerateTaskDispatchEvent();
41+
Assert.Throws<InvalidTaskException>(() => new AideClinicalReviewPlugin(_serviceScopeFactory.Object, _messageBrokerPublisherService.Object, _logger.Object, message));
42+
43+
foreach (var key in Keys.RequiredParameters.Take(Keys.RequiredParameters.Count - 1))
44+
{
45+
message.TaskPluginArguments.Add(key, Guid.NewGuid().ToString());
46+
Assert.Throws<InvalidTaskException>(() => new AideClinicalReviewPlugin(_serviceScopeFactory.Object, _messageBrokerPublisherService.Object, _logger.Object, message));
47+
}
48+
}
49+
50+
private static TaskDispatchEvent GenerateTaskDispatchEventWithValidArguments()
51+
{
52+
var message = GenerateTaskDispatchEvent();
53+
message.TaskPluginArguments[Keys.QueueName] = "queue-name";
54+
message.TaskPluginArguments[Keys.WorkflowName] = "workflowName";
55+
message.TaskPluginArguments[Keys.PatientName] = "patientname";
56+
message.TaskPluginArguments[Keys.PatientId] = "patientid";
57+
message.TaskPluginArguments[Keys.PatientDob] = "patientdob";
58+
message.TaskPluginArguments[Keys.PatientSex] = "patientsex";
59+
message.TaskPluginArguments[Keys.ReviewedTaskDetails] = "taskdetails";
60+
return message;
61+
}
62+
63+
private static TaskDispatchEvent GenerateTaskDispatchEvent()
64+
{
65+
var message = new TaskDispatchEvent
66+
{
67+
CorrelationId = Guid.NewGuid().ToString(),
68+
ExecutionId = Guid.NewGuid().ToString(),
69+
TaskPluginType = Guid.NewGuid().ToString(),
70+
WorkflowInstanceId = Guid.NewGuid().ToString(),
71+
TaskId = Guid.NewGuid().ToString(),
72+
IntermediateStorage = new Storage
73+
{
74+
Name = Guid.NewGuid().ToString(),
75+
Endpoint = Guid.NewGuid().ToString(),
76+
Credentials = new Credentials
77+
{
78+
AccessKey = Guid.NewGuid().ToString(),
79+
AccessToken = Guid.NewGuid().ToString()
80+
},
81+
Bucket = Guid.NewGuid().ToString(),
82+
RelativeRootPath = Guid.NewGuid().ToString(),
83+
}
84+
};
85+
message.Inputs.Add(new Storage
86+
{
87+
Name = "input-dicom",
88+
Endpoint = Guid.NewGuid().ToString(),
89+
Credentials = new Credentials
90+
{
91+
AccessKey = Guid.NewGuid().ToString(),
92+
AccessToken = Guid.NewGuid().ToString()
93+
},
94+
Bucket = Guid.NewGuid().ToString(),
95+
RelativeRootPath = Guid.NewGuid().ToString(),
96+
});
97+
message.Inputs.Add(new Storage
98+
{
99+
Name = "input-ehr",
100+
Endpoint = Guid.NewGuid().ToString(),
101+
Credentials = new Credentials
102+
{
103+
AccessKey = Guid.NewGuid().ToString(),
104+
AccessToken = Guid.NewGuid().ToString()
105+
},
106+
Bucket = Guid.NewGuid().ToString(),
107+
RelativeRootPath = Guid.NewGuid().ToString(),
108+
});
109+
message.Outputs.Add(new Storage
110+
{
111+
Name = "output",
112+
Endpoint = Guid.NewGuid().ToString(),
113+
Credentials = new Credentials
114+
{
115+
AccessKey = Guid.NewGuid().ToString(),
116+
AccessToken = Guid.NewGuid().ToString()
117+
},
118+
Bucket = Guid.NewGuid().ToString(),
119+
RelativeRootPath = Guid.NewGuid().ToString(),
120+
});
121+
return message;
122+
}
123+
}
124+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
8+
<IsPackable>false</IsPackable>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
13+
<PackageReference Include="Moq" Version="4.17.2" />
14+
<PackageReference Include="xunit" Version="2.4.1" />
15+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
16+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
17+
<PrivateAssets>all</PrivateAssets>
18+
</PackageReference>
19+
<PackageReference Include="coverlet.collector" Version="3.1.2">
20+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
21+
<PrivateAssets>all</PrivateAssets>
22+
</PackageReference>
23+
</ItemGroup>
24+
25+
<ItemGroup>
26+
<ProjectReference Include="..\..\..\src\TaskManager\Plug-ins\AideClinicalReview\Monai.Deploy.WorkflowManager.TaskManager.AideClinicalReview.csproj" />
27+
</ItemGroup>
28+
29+
</Project>

0 commit comments

Comments
 (0)