Skip to content

Commit 04980d6

Browse files
authored
test: Added unit tests to MappingUtilities.cs (#810)
* test: Added tests to MappingUtilities.cs Also changed MappingUtilities.cs method ParseStringFlag to accept null and return ArgumentException as expected * test: Added more coverage * chore: Remove erroneous import * test: updated tests * chore: Remove null * chore: Remove comma
1 parent c1aff68 commit 04980d6

3 files changed

Lines changed: 148 additions & 0 deletions

File tree

application/CohortManager/src/Functions/Functions.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HealthChecks", "Shared\Heal
212212
EndProject
213213
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnumHelperTests", "..\..\..\..\tests\UnitTests\SharedTests\EnumHelperTests\EnumHelperTests.csproj", "{1FCC5D88-C291-46E0-84BE-A8FD465FD509}"
214214
EndProject
215+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MappingUtilitiesTests", "..\..\..\..\tests\UnitTests\SharedTests\MappingUtilitiesTests\MappingUtilitiesTests.csproj", "{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}"
216+
EndProject
215217
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureQueueStorageHelperTests", "..\..\..\..\tests\UnitTests\AzureQueueStorageHelperTests\AzureQueueStorageHelperTests.csproj", "{870D1FAF-5928-4853-85DD-77154D39F3ED}"
216218
EndProject
217219
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReadRulesTests", "..\..\..\..\tests\UnitTests\SharedTests\ReadRulesTests\ReadRulesTests.csproj", "{115F417D-C015-4ABE-9438-09CE31114CEE}"
@@ -594,6 +596,10 @@ Global
594596
{1FCC5D88-C291-46E0-84BE-A8FD465FD509}.Debug|Any CPU.Build.0 = Debug|Any CPU
595597
{1FCC5D88-C291-46E0-84BE-A8FD465FD509}.Release|Any CPU.ActiveCfg = Release|Any CPU
596598
{1FCC5D88-C291-46E0-84BE-A8FD465FD509}.Release|Any CPU.Build.0 = Release|Any CPU
599+
{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
600+
{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
601+
{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
602+
{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}.Release|Any CPU.Build.0 = Release|Any CPU
597603
{870D1FAF-5928-4853-85DD-77154D39F3ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
598604
{870D1FAF-5928-4853-85DD-77154D39F3ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
599605
{870D1FAF-5928-4853-85DD-77154D39F3ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
namespace MappingUtilitiesTests;
2+
3+
using NHS.CohortManager.Shared.Utilities;
4+
5+
[TestClass]
6+
public class MappingUtilitiesTests
7+
{
8+
private static readonly DateTime expectedResultDT = new DateTime(2000, 01, 01);
9+
10+
[TestMethod]
11+
[DataRow("2000/01/01")]
12+
public void ParseNullableDateTime_ValidInput_ReturnDate(string date)
13+
{
14+
//No Arrange
15+
//Act
16+
var actual = MappingUtilities.ParseNullableDateTime(date);
17+
18+
//Assert
19+
Assert.AreEqual(actual, expectedResultDT);
20+
}
21+
22+
[TestMethod]
23+
[DataRow("2000/0/0")] //Invalid date
24+
[DataRow(null)] //Null input
25+
public void ParseNullableDateTime_InvalidInput_ReturnNull(string date)
26+
{
27+
//No Arrange
28+
//Act
29+
var actual = MappingUtilities.ParseNullableDateTime(date);
30+
31+
//Assert
32+
Assert.IsNull(actual);
33+
}
34+
35+
[TestMethod]
36+
[DataRow("0",(short)0)]
37+
[DataRow("1",(short)1)]
38+
[DataRow("N",(short)0)]
39+
[DataRow("Y",(short)1)]
40+
public void ParseStringFlag_ValidInput_ReturnDate(string flag, short expectedResult)
41+
{
42+
//No Arrange
43+
//Act
44+
short actual = MappingUtilities.ParseStringFlag(flag);
45+
46+
//Assert
47+
Assert.AreEqual(actual, expectedResult);
48+
}
49+
50+
[TestMethod]
51+
[DataRow("W")]
52+
public void ParseStringFlag_InvalidInput_ReturnArguementError(string flag)
53+
{
54+
//No Arrange or Act
55+
//Assert
56+
var exception = Assert.ThrowsException<ArgumentException>(() => MappingUtilities.ParseStringFlag(flag));
57+
Assert.AreEqual("Invalid input", exception.Message);
58+
}
59+
60+
[TestMethod]
61+
[DataRow("01/01/2000")] // dd/mm/yyyy
62+
[DataRow("20000101")] // yyyymmdd
63+
[DataRow("1/1/2000")] // d/m/yyyy
64+
[DataRow("2000")] //yyyy
65+
[DataRow("200001")] //yyyymm
66+
public void ParseDates_ValidInput_ReturnDate(string date)
67+
{
68+
//No Arrange
69+
//Act
70+
var actual = MappingUtilities.ParseDates(date);
71+
72+
//Assert
73+
Assert.AreEqual(actual, expectedResultDT);
74+
}
75+
76+
[TestMethod]
77+
[DataRow("00/00/2000")] // dd/mm/yyyy
78+
[DataRow("20000000")] // yyyymmdd
79+
[DataRow("0/0/2000")] // d/m/yyyy
80+
[DataRow(null)]
81+
[DataRow("")]
82+
public void ParseDates_InvalidInput_ReturnNull(string date)
83+
{
84+
//No Arrange
85+
//Act
86+
var actual = MappingUtilities.ParseDates(date);
87+
88+
//Assert
89+
Assert.IsNull(actual);
90+
}
91+
92+
[TestMethod]
93+
public void FormatDateTime_ValidInput_ReturnDate()
94+
{
95+
//Arrange
96+
string expectedResult = "2000-01-01";
97+
98+
//Act
99+
var actual = MappingUtilities.FormatDateTime(expectedResultDT);
100+
101+
//Assert
102+
Assert.AreEqual(actual, expectedResult);
103+
}
104+
105+
[TestMethod]
106+
public void FormatDateTime_InvalidInput_ReturnNull()
107+
{
108+
//No Arrange
109+
//Act
110+
var actual = MappingUtilities.FormatDateTime(null);
111+
112+
//Assert
113+
Assert.IsNull(actual);
114+
}
115+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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/Utilities/Utilities.csproj" />
21+
</ItemGroup>
22+
23+
<ItemGroup>
24+
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
25+
</ItemGroup>
26+
27+
</Project>

0 commit comments

Comments
 (0)