Skip to content

Commit 6b25a0c

Browse files
Merge pull request #561 from PathfinderHonorManager/develop
Improved tests - allowed null grade on pathfinder
2 parents a93c17c + 43134a9 commit 6b25a0c

16 files changed

+1662
-251
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
name: 'Setup .NET'
2+
description: 'Sets up .NET environment'
3+
runs:
4+
using: "composite"
5+
steps:
6+
- name: Set up .NET Core
7+
uses: actions/setup-dotnet@v4.2.0
8+
with:
9+
dotnet-version: '9.0.x'

.github/dependabot.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,15 @@ updates:
77
schedule:
88
interval: "daily"
99
target-branch: "develop"
10+
commit-message:
11+
prefix: "chore"
12+
include: "scope"
1013

1114
- package-ecosystem: "github-actions"
1215
directory: "/"
1316
schedule:
1417
interval: "daily"
1518
target-branch: "develop"
19+
commit-message:
20+
prefix: "ci"
21+
include: "scope"
Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: "Unit Tests"
1+
name: "Develop Tests"
22

33
on:
44
push:
@@ -11,11 +11,6 @@ jobs:
1111

1212
steps:
1313
- uses: actions/checkout@v4
14-
15-
- name: Set up .NET Core
16-
uses: actions/setup-dotnet@v4.1.0
17-
with:
18-
dotnet-version: '8.0.x'
19-
14+
- uses: ./.github/actions/setup-dotnet
2015
- name: Test with the dotnet CLI
2116
run: dotnet test

.github/workflows/develop_pathfinderhonormanager.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@ jobs:
1616
steps:
1717
- uses: actions/checkout@v4
1818

19-
- name: Set up .NET Core
20-
uses: actions/setup-dotnet@v4.1.0
21-
with:
22-
dotnet-version: '9.0.x'
19+
- uses: ./.github/actions/setup-dotnet
2320

2421
- name: Build with dotnet
2522
run: dotnet build --configuration Release

.github/workflows/main_pathfinderhonormanager.yml

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,8 @@ jobs:
1717
steps:
1818
- uses: actions/checkout@v4
1919

20-
- name: Set up .NET Core
21-
uses: actions/setup-dotnet@v4.1.0
22-
with:
23-
dotnet-version: '9.0.x'
24-
20+
- uses: ./.github/actions/setup-dotnet
21+
2522
- name: Test with the dotnet CLI
2623
run: dotnet test
2724

@@ -42,10 +39,7 @@ jobs:
4239
- name: Checkout repository
4340
uses: actions/checkout@v4
4441

45-
- name: Set up .NET Core
46-
uses: actions/setup-dotnet@v4.1.0
47-
with:
48-
dotnet-version: '9.0.x'
42+
- uses: ./.github/actions/setup-dotnet
4943

5044
- name: Initialize CodeQL
5145
uses: github/codeql-action/init@v3
@@ -64,10 +58,7 @@ jobs:
6458
steps:
6559
- uses: actions/checkout@v4
6660

67-
- name: Set up .NET Core
68-
uses: actions/setup-dotnet@v4.1.0
69-
with:
70-
dotnet-version: '9.0.x'
61+
- uses: ./.github/actions/setup-dotnet
7162

7263
- name: Build with dotnet
7364
run: dotnet build --configuration Release

.vscode/launch.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"version": "0.2.0",
33
"configurations": [
44
{
5-
65
"name": ".NET Core Launch (web)",
76
"type": "coreclr",
87
"request": "launch",

.vscode/tasks.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,26 @@
3636
"${workspaceFolder}/PathfinderHonorManager/PathfinderHonorManager.csproj"
3737
],
3838
"problemMatcher": "$msCompile"
39+
},
40+
{
41+
"label": "stryker",
42+
"command": "dotnet",
43+
"type": "process",
44+
"args": [
45+
"stryker",
46+
"--config-file",
47+
"${workspaceFolder}/PathfinderHonorManager/stryker-config.json",
48+
"-o"
49+
],
50+
"options": {
51+
"cwd": "${workspaceFolder}/PathfinderHonorManager"
52+
},
53+
"problemMatcher": [],
54+
"presentation": {
55+
"reveal": "always",
56+
"panel": "shared",
57+
"close": true
58+
}
3959
}
4060
]
4161
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
using System;
2+
using System.Text.Json;
3+
using NUnit.Framework;
4+
using PathfinderHonorManager.Converters;
5+
6+
namespace PathfinderHonorManager.Tests.Converters
7+
{
8+
[TestFixture]
9+
public class NullableDateTimeConverterTests
10+
{
11+
private NullableDateTimeConverter _converter;
12+
13+
[SetUp]
14+
public void Setup()
15+
{
16+
_converter = new NullableDateTimeConverter();
17+
}
18+
19+
[Test]
20+
public void Read_NullString_ReturnsNull()
21+
{
22+
var json = "null";
23+
var reader = new Utf8JsonReader(System.Text.Encoding.UTF8.GetBytes(json));
24+
reader.Read();
25+
26+
var result = _converter.Read(ref reader, typeof(DateTime?), new JsonSerializerOptions());
27+
28+
Assert.That(result, Is.Null);
29+
}
30+
31+
[Test]
32+
public void Read_ValidDateTimeString_ReturnsDateTime()
33+
{
34+
var expectedDate = new DateTime(2024, 3, 14);
35+
var json = $"\"{expectedDate:O}\"";
36+
var reader = new Utf8JsonReader(System.Text.Encoding.UTF8.GetBytes(json));
37+
reader.Read();
38+
39+
var result = _converter.Read(ref reader, typeof(DateTime?), new JsonSerializerOptions());
40+
41+
Assert.That(result, Is.Not.Null);
42+
Assert.That(result.Value.Date, Is.EqualTo(expectedDate.Date));
43+
}
44+
45+
[Test]
46+
public void Write_NullDateTime_WritesNullValue()
47+
{
48+
using var stream = new System.IO.MemoryStream();
49+
using var writer = new Utf8JsonWriter(stream);
50+
51+
DateTime? nullDateTime = null;
52+
_converter.Write(writer, nullDateTime, new JsonSerializerOptions());
53+
writer.Flush();
54+
55+
var json = System.Text.Encoding.UTF8.GetString(stream.ToArray());
56+
Assert.That(json, Is.EqualTo("null"));
57+
}
58+
59+
[Test]
60+
public void Write_MinValueDateTime_WritesNullValue()
61+
{
62+
using var stream = new System.IO.MemoryStream();
63+
using var writer = new Utf8JsonWriter(stream);
64+
65+
DateTime? minValue = DateTime.MinValue;
66+
_converter.Write(writer, minValue, new JsonSerializerOptions());
67+
writer.Flush();
68+
69+
var json = System.Text.Encoding.UTF8.GetString(stream.ToArray());
70+
Assert.That(json, Is.EqualTo("null"));
71+
}
72+
73+
[Test]
74+
public void Write_ValidDateTime_WritesDateTimeString()
75+
{
76+
using var stream = new System.IO.MemoryStream();
77+
using var writer = new Utf8JsonWriter(stream);
78+
79+
var dateTime = new DateTime(2024, 3, 14);
80+
_converter.Write(writer, dateTime, new JsonSerializerOptions());
81+
writer.Flush();
82+
83+
var json = System.Text.Encoding.UTF8.GetString(stream.ToArray());
84+
Assert.That(json, Is.EqualTo($"\"{dateTime:yyyy-MM-ddTHH:mm:ss}\""));
85+
}
86+
}
87+
}

PathfinderHonorManager.Tests/PathfinderHonorManager.Tests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="coverlet.msbuild" Version="6.0.2">
11+
<PackageReference Include="coverlet.msbuild" Version="6.0.3">
1212
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1313
<PrivateAssets>all</PrivateAssets>
1414
</PackageReference>
1515
<PackageReference Include="FluentValidation" Version="11.11.0" />
1616
<PackageReference Include="Moq" Version="4.20.72" />
17-
<PackageReference Include="NUnit" Version="4.2.2" />
17+
<PackageReference Include="NUnit" Version="4.3.2" />
1818
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0" />
19-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
19+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
2020
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="9.0.0" />
2121
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0" />
2222
<PackageReference Include="FluentValidation.Validators.UnitTestExtension" Version="1.11.0.2" />

0 commit comments

Comments
 (0)