Skip to content

Commit 9e482bd

Browse files
refactor from xunit to nunit
1 parent 180f6ef commit 9e482bd

File tree

4 files changed

+36
-36
lines changed

4 files changed

+36
-36
lines changed

AniWorldReminder_API.Tests/AniWorldReminder_API.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
12-
<PackageReference Include="xunit" Version="2.9.3" />
13-
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
12+
<PackageReference Include="NUnit" Version="4.5.1" />
13+
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0">
1414
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1515
<PrivateAssets>all</PrivateAssets>
1616
</PackageReference>
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
using AniWorldReminder_API.Models;
2-
using Xunit;
2+
using NUnit.Framework;
33

44
namespace AniWorldReminder_API.Tests.Models
55
{
66
public class AppSettingsModelTests
77
{
8-
[Fact]
8+
[Test]
99
public void AppSettingsModel_HasConservativeEpisodeReminderDelayDefaults()
1010
{
1111
AppSettingsModel settings = new();
1212

13-
Assert.Equal(1500, settings.EpisodeReminderSeriesDelayMs);
14-
Assert.Equal(500, settings.EpisodeReminderNotificationDelayMs);
13+
Assert.AreEqual(1500, settings.EpisodeReminderSeriesDelayMs);
14+
Assert.AreEqual(500, settings.EpisodeReminderNotificationDelayMs);
1515
}
1616
}
1717
}

AniWorldReminder_API.Tests/Services/AdminHttpFailureNotificationHandlerTests.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
using AniWorldReminder_API.Interfaces;
22
using AniWorldReminder_API.Services;
33
using Microsoft.Extensions.Logging.Abstractions;
4+
using NUnit.Framework;
45
using System.Net;
56
using Telegram.Bot.Types;
67
using Telegram.Bot.Types.Enums;
78
using Telegram.Bot.Types.ReplyMarkups;
8-
using Xunit;
99

1010
namespace AniWorldReminder_API.Tests.Services
1111
{
1212
public class AdminHttpFailureNotificationHandlerTests
1313
{
14-
[Fact]
14+
[Test]
1515
public async Task SendAsync_SendsAdminTelegramMessage_OnTransientHttpFailureResponse()
1616
{
1717
using CurrentDirectoryScope _ = CurrentDirectoryScope.CreateWithSettingsFile(adminChat: "123456");
@@ -24,15 +24,15 @@ public async Task SendAsync_SendsAdminTelegramMessage_OnTransientHttpFailureResp
2424
new HttpRequestMessage(HttpMethod.Get, "https://example.com/episodes"),
2525
CancellationToken.None);
2626

27-
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
28-
Assert.Single(telegramBotService.Messages);
29-
Assert.Equal(123456L, telegramBotService.Messages[0].ChatId);
30-
Assert.Contains("HTTP request failed after all retries", telegramBotService.Messages[0].Text);
31-
Assert.Contains("GET https://example.com/episodes", telegramBotService.Messages[0].Text);
32-
Assert.Contains("HTTP 500 InternalServerError", telegramBotService.Messages[0].Text);
27+
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.InternalServerError));
28+
Assert.That(telegramBotService.Messages, Has.Count.EqualTo(1));
29+
Assert.That(telegramBotService.Messages[0].ChatId, Is.EqualTo(123456L));
30+
Assert.That(telegramBotService.Messages[0].Text, Does.Contain("HTTP request failed after all retries"));
31+
Assert.That(telegramBotService.Messages[0].Text, Does.Contain("GET https://example.com/episodes"));
32+
Assert.That(telegramBotService.Messages[0].Text, Does.Contain("HTTP 500 InternalServerError"));
3333
}
3434

35-
[Fact]
35+
[Test]
3636
public async Task SendAsync_DoesNotSendAdminTelegramMessage_OnSuccessfulResponse()
3737
{
3838
using CurrentDirectoryScope _ = CurrentDirectoryScope.CreateWithSettingsFile(adminChat: "123456");
@@ -45,11 +45,11 @@ public async Task SendAsync_DoesNotSendAdminTelegramMessage_OnSuccessfulResponse
4545
new HttpRequestMessage(HttpMethod.Get, "https://example.com/episodes"),
4646
CancellationToken.None);
4747

48-
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
49-
Assert.Empty(telegramBotService.Messages);
48+
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
49+
Assert.That(telegramBotService.Messages, Is.Empty);
5050
}
5151

52-
[Fact]
52+
[Test]
5353
public async Task SendAsync_SendsAdminTelegramMessage_OnTransientHttpException()
5454
{
5555
using CurrentDirectoryScope _ = CurrentDirectoryScope.CreateWithSettingsFile(adminChat: "123456");
@@ -58,13 +58,13 @@ public async Task SendAsync_SendsAdminTelegramMessage_OnTransientHttpException()
5858
telegramBotService,
5959
new StubHttpMessageHandler(_ => throw new HttpRequestException("network down")));
6060

61-
HttpRequestException exception = await Assert.ThrowsAsync<HttpRequestException>(() => invoker.SendAsync(
61+
HttpRequestException exception = Assert.ThrowsAsync<HttpRequestException>(() => invoker.SendAsync(
6262
new HttpRequestMessage(HttpMethod.Get, "https://example.com/episodes"),
63-
CancellationToken.None));
63+
CancellationToken.None))!;
6464

65-
Assert.Equal("network down", exception.Message);
66-
Assert.Single(telegramBotService.Messages);
67-
Assert.Contains("network down", telegramBotService.Messages[0].Text);
65+
Assert.That(exception.Message, Is.EqualTo("network down"));
66+
Assert.That(telegramBotService.Messages, Has.Count.EqualTo(1));
67+
Assert.That(telegramBotService.Messages[0].Text, Does.Contain("network down"));
6868
}
6969

7070
private static HttpMessageInvoker CreateInvoker(ITelegramBotService telegramBotService, HttpMessageHandler innerHandler)

AniWorldReminder_API.Tests/Services/EpisodeReminderDelayServiceTests.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@
22
using AniWorldReminder_API.Models;
33
using AniWorldReminder_API.Services;
44
using Microsoft.Extensions.Logging.Abstractions;
5-
using Xunit;
5+
using NUnit.Framework;
66

77
namespace AniWorldReminder_API.Tests.Services
88
{
99
public class EpisodeReminderDelayServiceTests
1010
{
11-
[Fact]
11+
[Test]
1212
public async Task DelayAfterSeriesScanAsync_UsesDefaultDelay_WhenSettingsAreMissing()
1313
{
1414
FakeDelayExecutor delayExecutor = new();
1515
EpisodeReminderDelayService service = new(NullLogger<EpisodeReminderDelayService>.Instance, delayExecutor);
1616

1717
await service.DelayAfterSeriesScanAsync(null);
1818

19-
Assert.Single(delayExecutor.Delays);
20-
Assert.InRange(delayExecutor.Delays[0], TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1500));
19+
Assert.That(delayExecutor.Delays, Has.Count.EqualTo(1));
20+
Assert.That(delayExecutor.Delays[0], Is.InRange(TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1500)));
2121
}
2222

23-
[Fact]
23+
[Test]
2424
public async Task DelayAfterSeriesScanAsync_UsesDefaultDelay_WhenConfiguredDelayIsInvalid()
2525
{
2626
FakeDelayExecutor delayExecutor = new();
@@ -32,11 +32,11 @@ public async Task DelayAfterSeriesScanAsync_UsesDefaultDelay_WhenConfiguredDelay
3232

3333
await service.DelayAfterSeriesScanAsync(appSettings);
3434

35-
Assert.Single(delayExecutor.Delays);
36-
Assert.InRange(delayExecutor.Delays[0], TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1500));
35+
Assert.That(delayExecutor.Delays, Has.Count.EqualTo(1));
36+
Assert.That(delayExecutor.Delays[0], Is.InRange(TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1500)));
3737
}
3838

39-
[Fact]
39+
[Test]
4040
public async Task DelayAfterNotificationAsync_UsesConfiguredDelay()
4141
{
4242
FakeDelayExecutor delayExecutor = new();
@@ -48,11 +48,11 @@ public async Task DelayAfterNotificationAsync_UsesConfiguredDelay()
4848

4949
await service.DelayAfterNotificationAsync(appSettings);
5050

51-
Assert.Single(delayExecutor.Delays);
52-
Assert.Equal(TimeSpan.FromMilliseconds(750), delayExecutor.Delays[0]);
51+
Assert.That(delayExecutor.Delays, Has.Count.EqualTo(1));
52+
Assert.That(delayExecutor.Delays[0], Is.EqualTo(TimeSpan.FromMilliseconds(750)));
5353
}
5454

55-
[Fact]
55+
[Test]
5656
public async Task DelayAfterNotificationAsync_UsesConfiguredRange_WhenDelayExceedsMinimum()
5757
{
5858
FakeDelayExecutor delayExecutor = new();
@@ -64,8 +64,8 @@ public async Task DelayAfterNotificationAsync_UsesConfiguredRange_WhenDelayExcee
6464

6565
await service.DelayAfterNotificationAsync(appSettings);
6666

67-
Assert.Single(delayExecutor.Delays);
68-
Assert.InRange(delayExecutor.Delays[0], TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(2000));
67+
Assert.That(delayExecutor.Delays, Has.Count.EqualTo(1));
68+
Assert.That(delayExecutor.Delays[0], Is.InRange(TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(2000)));
6969
}
7070

7171
private sealed class FakeDelayExecutor : IDelayExecutor

0 commit comments

Comments
 (0)