Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
6 changes: 6 additions & 0 deletions application/CohortManager/src/Functions/Functions.sln
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HealthChecks", "Shared\Heal
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnumHelperTests", "..\..\..\..\tests\UnitTests\SharedTests\EnumHelperTests\EnumHelperTests.csproj", "{1FCC5D88-C291-46E0-84BE-A8FD465FD509}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MappingUtilitiesTests", "..\..\..\..\tests\UnitTests\SharedTests\MappingUtilitiesTests\MappingUtilitiesTests.csproj", "{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureQueueStorageHelperTests", "..\..\..\..\tests\UnitTests\AzureQueueStorageHelperTests\AzureQueueStorageHelperTests.csproj", "{870D1FAF-5928-4853-85DD-77154D39F3ED}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReadRulesTests", "..\..\..\..\tests\UnitTests\SharedTests\ReadRulesTests\ReadRulesTests.csproj", "{115F417D-C015-4ABE-9438-09CE31114CEE}"
Expand Down Expand Up @@ -594,6 +596,10 @@ Global
{1FCC5D88-C291-46E0-84BE-A8FD465FD509}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FCC5D88-C291-46E0-84BE-A8FD465FD509}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FCC5D88-C291-46E0-84BE-A8FD465FD509}.Release|Any CPU.Build.0 = Release|Any CPU
{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2DB16E9-F9C5-4E69-909C-D8ACFB8137CB}.Release|Any CPU.Build.0 = Release|Any CPU
{870D1FAF-5928-4853-85DD-77154D39F3ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{870D1FAF-5928-4853-85DD-77154D39F3ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{870D1FAF-5928-4853-85DD-77154D39F3ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ public static class MappingUtilities
/// </summary>
public static short ParseStringFlag(string flag)
{
return flag.ToUpper() switch
return flag?.ToUpper() switch
{
"0" => 0,
"1" => 1,
"Y" => 1,
"N" => 0,
_ => throw new ArgumentException("Invalid input")
_ => throw new ArgumentException("Invalid input"),
};
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
namespace MappingUtilitiesTests;
Comment thread
Joseph2910 marked this conversation as resolved.

using NHS.CohortManager.Shared.Utilities;

[TestClass]
public class MappingUtilitiesTests
{
private static readonly DateTime expectedResultDT = new DateTime(2000, 01, 01);

[TestMethod]
[DataRow("2000/01/01")]
public void ParseNullableDateTime_ValidInput_ReturnDate(string date)
{
//No Arrange
//Act
var actual = MappingUtilities.ParseNullableDateTime(date);

//Assert
Assert.AreEqual(actual, expectedResultDT);
}

[TestMethod]
[DataRow("2000/0/0")] //Invalid date
[DataRow(null)] //Null input
public void ParseNullableDateTime_InvalidInput_ReturnNull(string date)
{
//No Arrange
//Act
var actual = MappingUtilities.ParseNullableDateTime(date);

//Assert
Assert.IsNull(actual);
}

[TestMethod]
[DataRow("0",(short)0)]
[DataRow("1",(short)1)]
[DataRow("N",(short)0)]
[DataRow("Y",(short)1)]
public void ParseStringFlag_ValidInput_ReturnDate(string flag, short expectedResult)
{
//No Arrange
//Act
short actual = MappingUtilities.ParseStringFlag(flag);

//Assert
Assert.AreEqual(actual, expectedResult);
}

[TestMethod]
[DataRow("W")]
public void ParseStringFlag_InvalidInput_ReturnArguementError(string flag)
{
//No Arrange or Act
//Assert
var exception = Assert.ThrowsException<ArgumentException>(() => MappingUtilities.ParseStringFlag(flag));
Assert.AreEqual("Invalid input", exception.Message);
}

[TestMethod]
[DataRow("01/01/2000")] // dd/mm/yyyy
[DataRow("20000101")] // yyyymmdd
[DataRow("1/1/2000")] // d/m/yyyy
[DataRow("2000")] //yyyy
[DataRow("200001")] //yyyymm
public void ParseDates_ValidInput_ReturnDate(string date)
{
//No Arrange
//Act
var actual = MappingUtilities.ParseDates(date);

//Assert
Assert.AreEqual(actual, expectedResultDT);
}

[TestMethod]
[DataRow("00/00/2000")] // dd/mm/yyyy
[DataRow("20000000")] // yyyymmdd
[DataRow("0/0/2000")] // d/m/yyyy
[DataRow(null)]
[DataRow("")]
public void ParseDates_InvalidInput_ReturnNull(string date)
{
//No Arrange
//Act
var actual = MappingUtilities.ParseDates(date);

//Assert
Assert.IsNull(actual);
}

[TestMethod]
public void FormatDateTime_ValidInput_ReturnDate()
{
//Arrange
string expectedResult = "2000-01-01";

//Act
var actual = MappingUtilities.FormatDateTime(expectedResultDT);

//Assert
Assert.AreEqual(actual, expectedResult);
}

[TestMethod]
public void FormatDateTime_InvalidInput_ReturnNull()
{
//No Arrange
//Act
var actual = MappingUtilities.FormatDateTime(null);

//Assert
Assert.IsNull(actual);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="../../../../application/CohortManager/src/Functions/Shared/Utilities/Utilities.csproj" />
</ItemGroup>

<ItemGroup>
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
</ItemGroup>

</Project>