ProjectLighthouse/ProjectLighthouse.Tests/Unit/ModerationTests.cs
Henry Asbridge 92ce4c5af5
Some checks failed
Qodana / qodana (push) Has been cancelled
Continuous Integration / Build & Test (push) Has been cancelled
Upload Translations to Crowdin / crowdin-sync (push) Has been cancelled
Build Docker Image / Build and Publish (push) Has been cancelled
Update dependencies (#1093)
* Update dependencies of lighthouse

* Fix race condition in test

* Stop using async void in tests.

* Hopefully fix qodana issues

* Disable qodana PR-mode

* Suppress license issue in qodana as not a problem

* Exclude svg files from qodana scans
2025-07-15 17:50:56 +00:00

86 lines
No EOL
2.5 KiB
C#

using System;
using System.Threading.Tasks;
using LBPUnion.ProjectLighthouse.Administration.Maintenance.RepeatingTasks;
using LBPUnion.ProjectLighthouse.Database;
using LBPUnion.ProjectLighthouse.Tests.Helpers;
using LBPUnion.ProjectLighthouse.Types.Entities.Moderation;
using Microsoft.EntityFrameworkCore;
using Xunit;
namespace LBPUnion.ProjectLighthouse.Tests.Unit;
[Trait("Category", "Unit")]
public class ModerationTests
{
[Fact]
public async Task DismissExpiredCases_ShouldDismissExpiredCase()
{
await using DatabaseContext database = await MockHelper.GetTestDatabase();
ModerationCaseEntity @case = new()
{
CaseId = 1,
CreatorId = 1,
ExpiresAt = DateTime.UnixEpoch,
CreatorUsername = "unitTestUser",
};
database.Cases.Add(@case);
await database.SaveChangesAsync();
DismissExpiredCasesTask task = new();
await task.Run(database);
Assert.NotNull(await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 1 && c.DismissedAt != null));
}
[Fact]
public async Task DismissExpiredCases_ShouldNotDismissActiveCase()
{
await using DatabaseContext database = await MockHelper.GetTestDatabase();
ModerationCaseEntity @case = new()
{
CaseId = 2,
CreatorId = 1,
ExpiresAt = DateTime.UtcNow.AddHours(1),
CreatorUsername = "unitTestUser",
};
database.Cases.Add(@case);
await database.SaveChangesAsync();
DismissExpiredCasesTask task = new();
await task.Run(database);
Assert.NotNull(await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 2 && c.DismissedAt == null));
}
[Fact]
public async Task DismissExpiredCases_ShouldNotDismissAlreadyDismissedCase()
{
await using DatabaseContext database = await MockHelper.GetTestDatabase();
ModerationCaseEntity @case = new()
{
CaseId = 3,
CreatorId = 1,
ExpiresAt = DateTime.UnixEpoch,
DismissedAt = DateTime.UnixEpoch,
CreatorUsername = "unitTestUser",
};
database.Cases.Add(@case);
await database.SaveChangesAsync();
DismissExpiredCasesTask task = new();
await task.Run(database);
// check that the case was not dismissed again by comparing original time to new time
Assert.NotNull(
await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 3 && c.DismissedAt == DateTime.UnixEpoch));
}
}