Files
adas-core/adas-core.Test/Repositories/DisplayConfigTest.cs
T

98 lines
4.5 KiB
C#

using adas_core.Application.Repositories.Interfaces;
using adas_core.Domain.Enums;
using adas_core.Domain.Models.AppSettings;
using adas_core.Infrastructure.Repositories;
using adas_core.Test.Utilities;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using Moq;
namespace adas_core.Test.Repositories;
/// <summary>
/// Test fixture that groups unit tests validating the behavior of <see cref="DisplayConfig"/>.
/// </summary>
/// <remarks>
/// Decorated with the <see cref="TestFixtureAttribute"/> so that its contained test methods are recognized and executed by the NUnit test runner.
/// </remarks>
/// <!-- aidoc:v1 sig=1b3c211 -->
[TestFixture]
public class DisplayConfigTest
{
/// <summary>
/// Performs one-time setup for integration tests by initializing the display configuration, card configuration, and detail configuration repositories with test data, including a valid display configuration, a card configuration, and a nurse card details configuration.
/// </summary>
/// <!-- aidoc:v1 sig=518646b body=8037c13 -->
[OneTimeSetUp]
public async Task SetUp()
{
Options.Create(new ApiSettings());
_unitRepository = new Mock<IUnitRepository>();
_displayCardConfigRepository =
new DisplayCardConfigRepository(
IntegrationDb.Database,
new ApiSettings(),
new Mock<ILogger<DisplayCardConfigRepository>>().Object
);
_displayConfigRepository =
new DisplayConfigRepository(
IntegrationDb.Database,
new ApiSettings(),
new Mock<ILogger<DisplayConfigRepository>>().Object,
_unitRepository.Object
);
_displayDetailConfigRepository =
new DisplayDetailConfigRepository(
IntegrationDb.Database,
new ApiSettings(),
new Mock<ILogger<DisplayDetailConfigRepository>>().Object
);
await _displayDetailConfigRepository.InsertOneAsync(
TestUtilities.CreateValidCardDetailsNurseConfig(_configDisplayCardDetailsId));
await _displayCardConfigRepository.InsertOneAsync(TestUtilities.CreateValidCardConfig(_configDisplayCardId));
await _displayConfigRepository.InsertOneAsync(TestUtilities.CreateValidDisplayConfig(
DisplayConfigEnums.DisplayType.DisplayNurse, _configDisplayId, _configDisplayCardId,
_configDisplayCardDetailsId));
}
/// <summary>
/// One-time teardown method that cleans up the integration test database by dropping the display configuration collections created during testing.
/// </summary>
/// <!-- aidoc:v1 sig=2b9e932 body=c1885a2 -->
[OneTimeTearDown]
public async Task Cleanup()
{
// Clean up database after tests
await IntegrationDb.Database.DropCollectionAsync("config_displays");
await IntegrationDb.Database.DropCollectionAsync("config_displays_card");
await IntegrationDb.Database.DropCollectionAsync("config_displays_detail");
}
private DisplayConfigRepository _displayConfigRepository;
private DisplayCardConfigRepository _displayCardConfigRepository;
private DisplayDetailConfigRepository _displayDetailConfigRepository;
private Mock<IUnitRepository> _unitRepository;
private readonly ObjectId _configDisplayId = ObjectId.GenerateNewId();
private readonly ObjectId _configDisplayCardId = ObjectId.GenerateNewId();
private readonly ObjectId _configDisplayCardDetailsId = ObjectId.GenerateNewId();
/// <summary>
/// Verifies that retrieving a display configuration by its identifier returns a non-null result with the associated card and detail configurations populated.
/// </summary>
/// <!-- aidoc:v1 sig=b0680cd body=57902f6 -->
[Test]
public async Task GetByIdShouldReturnAllConfigsAssociated()
{
var result = await _displayConfigRepository.GetById(_configDisplayId);
Assert.That(result, Is.Not.Null);
using (Assert.EnterMultipleScope())
{
Assert.That(result.CardConfigId, Is.Not.Null);
Assert.That(result.CardConfig, Is.Not.Null);
Assert.That(result.DetailConfigId, Is.Not.Null);
Assert.That(result.DetailConfig, Is.Not.Null);
};
}
}