Skip to content

Commit 15738c0

Browse files
test: data services core (#832)
* test: data service core tests * feat: data service core tests * chore: remove old data services tests * feat: data services tests * chore: remove unused imports * chore: remove commented code * Update TransformDataService.cs
1 parent a976efb commit 15738c0

28 files changed

+878
-3559
lines changed

application/CohortManager/src/Functions/Functions.sln

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TransformDataServiceTests",
161161
EndProject
162162
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ValidateDatesTests", "..\..\..\..\tests\UnitTests\CaasIntegrationTests\ValidateDates\ValidateDatesTests.csproj", "{9005A919-F64D-4723-87A7-595BB4E64563}"
163163
EndProject
164-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataServiceTests", "..\..\..\..\tests\UnitTests\DataServiceTests\DataServiceTests.csproj", "{E26B2D73-BD60-4AD8-B403-939ACEDE9429}"
165-
EndProject
166164
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddBatchToQueueTest", "..\..\..\..\tests\UnitTests\CaasIntegrationTests\AddBatchToQueueTest\AddBatchToQueueTest.csproj", "{CD0F16B5-8752-4917-A4CF-15195607E027}"
167165
EndProject
168166
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProcessCaasFileTests", "..\..\..\..\tests\UnitTests\CaasIntegrationTests\processCaasFileTest\ProcessCaasFileTests.csproj", "{FF6BE3D4-F1A4-42EB-B473-21E50A634317}"
@@ -225,6 +223,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FhirParserTests", "..\..\..
225223
EndProject
226224
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileNameParserTests", "..\..\..\..\tests\UnitTests\SharedTests\FileNameParserTests\FileNameParserTests.csproj", "{0A68E48A-8249-4A74-B5B7-5921017D07BD}"
227225
EndProject
226+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}"
227+
EndProject
228+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{D0D6B8B0-AC35-B3FA-0B96-A9B0E4A3253E}"
229+
EndProject
230+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataServicesCoreTests", "..\..\..\..\tests\UnitTests\SharedTests\DataServicesCoreTests\DataServicesCoreTests.csproj", "{B592CC8C-9FCC-41E8-922A-3FB55222588D}"
231+
EndProject
232+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataServicesClientTests", "..\..\..\..\tests\UnitTests\SharedTests\DataServicesClientTests\DataServicesClientTests.csproj", "{5F553A46-38FA-4FF7-BB3B-E322E5D90035}"
233+
EndProject
228234
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddCohortDistributionDataTests", "..\..\..\..\tests\UnitTests\CohortDistributionTests\AddCohortDistributionDataTests\AddCohortDistributionDataTests.csproj", "{5D5C7C1C-37FE-4671-8BA2-138447049EE3}"
229235
EndProject
230236
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CallDurableDemographicFuncTests", "..\..\..\..\tests\UnitTests\CallDurableDemographicFuncTests\CallDurableDemographicFuncTests.csproj", "{C46D3B38-5BF3-4A4D-B53C-0F698407BC90}"
@@ -1375,6 +1381,22 @@ Global
13751381
{D6C3BE30-1AA0-49F5-928C-06102D183A08}.Release|x64.Build.0 = Release|Any CPU
13761382
{D6C3BE30-1AA0-49F5-928C-06102D183A08}.Release|x86.ActiveCfg = Release|Any CPU
13771383
{D6C3BE30-1AA0-49F5-928C-06102D183A08}.Release|x86.Build.0 = Release|Any CPU
1384+
{2476768B-4A21-4348-8EA3-A95EC27DE464}.Debug|x64.ActiveCfg = Debug|Any CPU
1385+
{2476768B-4A21-4348-8EA3-A95EC27DE464}.Debug|x64.Build.0 = Debug|Any CPU
1386+
{2476768B-4A21-4348-8EA3-A95EC27DE464}.Debug|x86.ActiveCfg = Debug|Any CPU
1387+
{2476768B-4A21-4348-8EA3-A95EC27DE464}.Debug|x86.Build.0 = Debug|Any CPU
1388+
{2476768B-4A21-4348-8EA3-A95EC27DE464}.Release|x64.ActiveCfg = Release|Any CPU
1389+
{2476768B-4A21-4348-8EA3-A95EC27DE464}.Release|x64.Build.0 = Release|Any CPU
1390+
{2476768B-4A21-4348-8EA3-A95EC27DE464}.Release|x86.ActiveCfg = Release|Any CPU
1391+
{2476768B-4A21-4348-8EA3-A95EC27DE464}.Release|x86.Build.0 = Release|Any CPU
1392+
{8B96E54E-5391-4B61-97D5-B31FC7963BEA}.Debug|x64.ActiveCfg = Debug|Any CPU
1393+
{8B96E54E-5391-4B61-97D5-B31FC7963BEA}.Debug|x64.Build.0 = Debug|Any CPU
1394+
{8B96E54E-5391-4B61-97D5-B31FC7963BEA}.Debug|x86.ActiveCfg = Debug|Any CPU
1395+
{8B96E54E-5391-4B61-97D5-B31FC7963BEA}.Debug|x86.Build.0 = Debug|Any CPU
1396+
{8B96E54E-5391-4B61-97D5-B31FC7963BEA}.Release|x64.ActiveCfg = Release|Any CPU
1397+
{8B96E54E-5391-4B61-97D5-B31FC7963BEA}.Release|x64.Build.0 = Release|Any CPU
1398+
{8B96E54E-5391-4B61-97D5-B31FC7963BEA}.Release|x86.ActiveCfg = Release|Any CPU
1399+
{8B96E54E-5391-4B61-97D5-B31FC7963BEA}.Release|x86.Build.0 = Release|Any CPU
13781400
{A54E1897-B755-4D15-8575-6589E17ECADE}.Debug|x64.ActiveCfg = Debug|Any CPU
13791401
{A54E1897-B755-4D15-8575-6589E17ECADE}.Debug|x64.Build.0 = Debug|Any CPU
13801402
{A54E1897-B755-4D15-8575-6589E17ECADE}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -1471,14 +1493,6 @@ Global
14711493
{9005A919-F64D-4723-87A7-595BB4E64563}.Release|x64.Build.0 = Release|Any CPU
14721494
{9005A919-F64D-4723-87A7-595BB4E64563}.Release|x86.ActiveCfg = Release|Any CPU
14731495
{9005A919-F64D-4723-87A7-595BB4E64563}.Release|x86.Build.0 = Release|Any CPU
1474-
{E26B2D73-BD60-4AD8-B403-939ACEDE9429}.Debug|x64.ActiveCfg = Debug|Any CPU
1475-
{E26B2D73-BD60-4AD8-B403-939ACEDE9429}.Debug|x64.Build.0 = Debug|Any CPU
1476-
{E26B2D73-BD60-4AD8-B403-939ACEDE9429}.Debug|x86.ActiveCfg = Debug|Any CPU
1477-
{E26B2D73-BD60-4AD8-B403-939ACEDE9429}.Debug|x86.Build.0 = Debug|Any CPU
1478-
{E26B2D73-BD60-4AD8-B403-939ACEDE9429}.Release|x64.ActiveCfg = Release|Any CPU
1479-
{E26B2D73-BD60-4AD8-B403-939ACEDE9429}.Release|x64.Build.0 = Release|Any CPU
1480-
{E26B2D73-BD60-4AD8-B403-939ACEDE9429}.Release|x86.ActiveCfg = Release|Any CPU
1481-
{E26B2D73-BD60-4AD8-B403-939ACEDE9429}.Release|x86.Build.0 = Release|Any CPU
14821496
{CD0F16B5-8752-4917-A4CF-15195607E027}.Debug|x64.ActiveCfg = Debug|Any CPU
14831497
{CD0F16B5-8752-4917-A4CF-15195607E027}.Debug|x64.Build.0 = Debug|Any CPU
14841498
{CD0F16B5-8752-4917-A4CF-15195607E027}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -1711,6 +1725,30 @@ Global
17111725
{0A68E48A-8249-4A74-B5B7-5921017D07BD}.Release|x64.Build.0 = Release|Any CPU
17121726
{0A68E48A-8249-4A74-B5B7-5921017D07BD}.Release|x86.ActiveCfg = Release|Any CPU
17131727
{0A68E48A-8249-4A74-B5B7-5921017D07BD}.Release|x86.Build.0 = Release|Any CPU
1728+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1729+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Debug|Any CPU.Build.0 = Debug|Any CPU
1730+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Debug|x64.ActiveCfg = Debug|Any CPU
1731+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Debug|x64.Build.0 = Debug|Any CPU
1732+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Debug|x86.ActiveCfg = Debug|Any CPU
1733+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Debug|x86.Build.0 = Debug|Any CPU
1734+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Release|Any CPU.ActiveCfg = Release|Any CPU
1735+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Release|Any CPU.Build.0 = Release|Any CPU
1736+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Release|x64.ActiveCfg = Release|Any CPU
1737+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Release|x64.Build.0 = Release|Any CPU
1738+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Release|x86.ActiveCfg = Release|Any CPU
1739+
{B592CC8C-9FCC-41E8-922A-3FB55222588D}.Release|x86.Build.0 = Release|Any CPU
1740+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
1741+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Debug|Any CPU.Build.0 = Debug|Any CPU
1742+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Debug|x64.ActiveCfg = Debug|Any CPU
1743+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Debug|x64.Build.0 = Debug|Any CPU
1744+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Debug|x86.ActiveCfg = Debug|Any CPU
1745+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Debug|x86.Build.0 = Debug|Any CPU
1746+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Release|Any CPU.ActiveCfg = Release|Any CPU
1747+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Release|Any CPU.Build.0 = Release|Any CPU
1748+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Release|x64.ActiveCfg = Release|Any CPU
1749+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Release|x64.Build.0 = Release|Any CPU
1750+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Release|x86.ActiveCfg = Release|Any CPU
1751+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035}.Release|x86.Build.0 = Release|Any CPU
17141752
{5D5C7C1C-37FE-4671-8BA2-138447049EE3}.Debug|x64.ActiveCfg = Debug|Any CPU
17151753
{5D5C7C1C-37FE-4671-8BA2-138447049EE3}.Debug|x64.Build.0 = Debug|Any CPU
17161754
{5D5C7C1C-37FE-4671-8BA2-138447049EE3}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -1793,6 +1831,9 @@ Global
17931831
{5AEBC8F8-3920-4A64-B9A5-A1898859C746} = {3CB19D2E-0BAE-4AC3-9D8D-32D9D265FCBF}
17941832
{3E51D76F-4A90-4EC2-AF80-74E6EE94C257} = {3CB19D2E-0BAE-4AC3-9D8D-32D9D265FCBF}
17951833
{EA290B1D-C07B-4B10-B7D1-F87E2629D069} = {198995B8-A14C-4890-BF05-10C65C1E790F}
1834+
{D0D6B8B0-AC35-B3FA-0B96-A9B0E4A3253E} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
1835+
{B592CC8C-9FCC-41E8-922A-3FB55222588D} = {D0D6B8B0-AC35-B3FA-0B96-A9B0E4A3253E}
1836+
{5F553A46-38FA-4FF7-BB3B-E322E5D90035} = {D0D6B8B0-AC35-B3FA-0B96-A9B0E4A3253E}
17961837
EndGlobalSection
17971838
GlobalSection(ExtensibilityGlobals) = postSolution
17981839
SolutionGuid = {6EACF2AC-4BC4-46CE-B6EB-1556257C4C21}

application/CohortManager/src/Functions/Shared/DataServices.Core/DataServiceAccessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class DataServiceAccessor<TEntity> : IDataServiceAccessor<TEntity> where
1010
{
1111
private readonly DbContext _context;
1212
private readonly ILogger<DataServiceAccessor<TEntity>> _logger;
13-
public DataServiceAccessor(DataServicesContext context, ILogger<DataServiceAccessor<TEntity>> logger)
13+
public DataServiceAccessor(DbContext context, ILogger<DataServiceAccessor<TEntity>> logger)
1414
{
1515
_context = context;
1616
_logger = logger;

application/CohortManager/src/Functions/Shared/DataServices.Core/RequestHandler.cs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,24 +129,32 @@ private async Task<HttpResponseData> Get(HttpRequestData req)
129129

130130
private async Task<HttpResponseData> GetById(HttpRequestData req, string keyValue)
131131
{
132-
if(!_authConfig.CanGetById(req))
132+
try
133133
{
134-
return CreateErrorResponse(req,UnauthorizedErrorMessage,HttpStatusCode.Unauthorized);
135-
}
134+
if(!_authConfig.CanGetById(req))
135+
{
136+
return CreateErrorResponse(req,UnauthorizedErrorMessage,HttpStatusCode.Unauthorized);
137+
}
136138

137-
var keyPredicate = CreateGetByKeyExpression(keyValue);
138-
var result = await _dataServiceAccessor.GetSingle(keyPredicate);
139+
var keyPredicate = CreateGetByKeyExpression(keyValue);
140+
var result = await _dataServiceAccessor.GetSingle(keyPredicate);
139141

140-
if(result == null)
141-
{
142-
return CreateErrorResponse(req,"No Data Found",HttpStatusCode.NotFound);
143-
}
142+
if(result == null)
143+
{
144+
return CreateErrorResponse(req,"No Data Found",HttpStatusCode.NotFound);
145+
}
144146

145147

146-
return CreateHttpResponse(req,new DataServiceResponse<string>
148+
return CreateHttpResponse(req,new DataServiceResponse<string>
149+
{
150+
JsonData = JsonSerializer.Serialize(result)
151+
});
152+
}
153+
catch (Exception ex)
147154
{
148-
JsonData = JsonSerializer.Serialize(result)
149-
});
155+
_logger.LogError(ex, "An unexpected error occurred while trying to get data");
156+
return CreateErrorResponse(req, "Failed to get Record", HttpStatusCode.InternalServerError);
157+
}
150158

151159
}
152160

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
{
2-
"profiles": {
3-
"BsSelectGpPractice": {
4-
"commandName": "Project",
5-
"commandLineArgs": "--port 7087",
6-
"launchBrowser": false
7-
}
8-
}
1+
{
2+
"profiles": {
3+
"BsSelectGpPractice": {
4+
"commandName": "Project",
5+
"commandLineArgs": "--port 7087",
6+
"launchBrowser": false
7+
}
8+
}
99
}
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
{
2-
"version": "2.0",
3-
"functionTimeout": "01:00:00",
4-
"logging": {
5-
"applicationInsights": {
6-
"samplingSettings": {
7-
"isEnabled": true,
8-
"excludedTypes": "Request"
9-
},
10-
"enableLiveMetricsFilters": true
11-
}
12-
}
1+
{
2+
"version": "2.0",
3+
"functionTimeout": "01:00:00",
4+
"logging": {
5+
"applicationInsights": {
6+
"samplingSettings": {
7+
"isEnabled": true,
8+
"excludedTypes": "Request"
9+
},
10+
"enableLiveMetricsFilters": true
11+
}
12+
}
1313
}

tests/TestUtils/setupRequest.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,19 @@ public SetupRequest()
1616
_request = new Mock<HttpRequestData>(_context.Object);
1717
}
1818

19-
public Mock<HttpRequestData> Setup(string json)
19+
public Mock<HttpRequestData> Setup(string? json = null)
2020
{
21-
var byteArray = Encoding.ASCII.GetBytes(json);
22-
var bodyStream = new MemoryStream(byteArray);
21+
if (json == null)
22+
{
23+
_request.Setup(r => r.Body).Returns((MemoryStream)null);
24+
} else
25+
{
26+
var byteArray = Encoding.ASCII.GetBytes(json);
27+
var bodyStream = new MemoryStream(byteArray);
2328

24-
_request.Setup(r => r.Body).Returns(bodyStream);
29+
_request.Setup(r => r.Body).Returns(bodyStream);
30+
}
31+
2532
_request.Setup(r => r.CreateResponse()).Returns(() =>
2633
{
2734
var response = new Mock<HttpResponseData>(_context.Object);
Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
2-
3-
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
5-
<ImplicitUsings>enable</ImplicitUsings>
6-
<Nullable>enable</Nullable>
7-
8-
<IsPackable>false</IsPackable>
9-
<IsTestProject>true</IsTestProject>
10-
</PropertyGroup>
11-
12-
<ItemGroup>
13-
<PackageReference Include="coverlet.collector" Version="6.0.0" />
14-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
15-
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
16-
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
17-
</ItemGroup>
18-
19-
<ItemGroup>
20-
<ProjectReference Include="../../../application/CohortManager/src/Functions/Shared/Common/Common.csproj" />
21-
<ProjectReference Include="../../../application/CohortManager/src/Functions/Shared/Model/Model.csproj" />
22-
<ProjectReference Include="../../TestUtils/TestUtils.csproj" />
23-
<ProjectReference Include="../../../application/CohortManager/src/Functions/CaasIntegration/receiveCaasFile/receiveCaasFile.csproj" />
24-
</ItemGroup>
25-
26-
<ItemGroup>
27-
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
28-
</ItemGroup>
29-
30-
</Project>
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net8.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
8+
<IsPackable>false</IsPackable>
9+
<IsTestProject>true</IsTestProject>
10+
</PropertyGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="coverlet.collector" Version="6.0.0" />
14+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
15+
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
16+
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<ProjectReference Include="../../../application/CohortManager/src/Functions/Shared/Common/Common.csproj" />
21+
<ProjectReference Include="../../../application/CohortManager/src/Functions/Shared/Model/Model.csproj" />
22+
<ProjectReference Include="../../TestUtils/TestUtils.csproj" />
23+
<ProjectReference Include="../../../application/CohortManager/src/Functions/CaasIntegration/receiveCaasFile/receiveCaasFile.csproj" />
24+
</ItemGroup>
25+
26+
<ItemGroup>
27+
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
28+
</ItemGroup>
29+
30+
</Project>
Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
1-
namespace NHS.CohortManager.Tests.UnitTests.CheckDemographicTests;
2-
3-
using Common;
4-
using Moq;
5-
using Model;
6-
using System.Text.Json;
7-
using System.Threading.Tasks;
8-
9-
10-
[TestClass]
11-
public class CheckDemographicTests
12-
{
13-
14-
private readonly Mock<ICallFunction> _callFunction = new();
15-
private readonly CheckDemographic _checkDemographic;
16-
17-
public CheckDemographicTests()
18-
{
19-
_checkDemographic = new CheckDemographic(_callFunction.Object);
20-
}
21-
22-
[TestMethod]
23-
public async Task GetDemographicAsync_ValidInput_ReturnDemographic()
24-
{
25-
//Arrange
26-
var uri = "test-uri.com/get";
27-
var nhsNumber = "1234567890";
28-
29-
var demographic = new Demographic
30-
{
31-
FirstName = "John",
32-
NhsNumber = nhsNumber
33-
};
34-
35-
_callFunction.Setup(x => x.SendGet(It.IsAny<string>()))
36-
.ReturnsAsync(JsonSerializer.Serialize(demographic))
37-
.Verifiable();
38-
39-
40-
//Act
41-
var result = await _checkDemographic.GetDemographicAsync(nhsNumber, uri);
42-
43-
//Assert
44-
Assert.AreEqual(nhsNumber, result.NhsNumber);
45-
Assert.AreEqual(demographic.FirstName, result.FirstName);
46-
}
47-
48-
}
1+
namespace NHS.CohortManager.Tests.UnitTests.CheckDemographicTests;
2+
3+
using Common;
4+
using Moq;
5+
using Model;
6+
using System.Text.Json;
7+
using System.Threading.Tasks;
8+
9+
10+
[TestClass]
11+
public class CheckDemographicTests
12+
{
13+
14+
private readonly Mock<ICallFunction> _callFunction = new();
15+
private readonly CheckDemographic _checkDemographic;
16+
17+
public CheckDemographicTests()
18+
{
19+
_checkDemographic = new CheckDemographic(_callFunction.Object);
20+
}
21+
22+
[TestMethod]
23+
public async Task GetDemographicAsync_ValidInput_ReturnDemographic()
24+
{
25+
//Arrange
26+
var uri = "test-uri.com/get";
27+
var nhsNumber = "1234567890";
28+
29+
var demographic = new Demographic
30+
{
31+
FirstName = "John",
32+
NhsNumber = nhsNumber
33+
};
34+
35+
_callFunction.Setup(x => x.SendGet(It.IsAny<string>()))
36+
.ReturnsAsync(JsonSerializer.Serialize(demographic))
37+
.Verifiable();
38+
39+
40+
//Act
41+
var result = await _checkDemographic.GetDemographicAsync(nhsNumber, uri);
42+
43+
//Assert
44+
Assert.AreEqual(nhsNumber, result.NhsNumber);
45+
Assert.AreEqual(demographic.FirstName, result.FirstName);
46+
}
47+
48+
}

0 commit comments

Comments
 (0)