using adas_core.Domain.Models.AppSettings;
using adas_core.Domain.Models.MongoModels;
using adas_core.Infrastructure.Repositories;
using Microsoft.Extensions.Options;
using Options = Microsoft.Extensions.Options.Options;
namespace adas_core.Test.Repositories;
[TestFixture]
[Category("Integration")]
public class ConfigUnitsRepositoryTest
{
///
/// Performs one-time setup for integration tests by resetting the config_units collection and seeding it with a single document (Id "PV1") containing two empty entries, then initializes the used by the tests.
///
[OneTimeSetUp]
public async Task Init()
{
_optionsApiSettings = Options.Create(_apiSettings);
var configUnitItem1 = new ConfigUnitItem();
var configUnitItem2 = new ConfigUnitItem();
var configUnits = new ConfigUnits
{
Id = "PV1",
Items = [configUnitItem1, configUnitItem2]
};
await IntegrationDb.Database.DropCollectionAsync("config_units");
await IntegrationDb.Database.CreateCollectionAsync("config_units");
_repository = new ConfigUnitsRepository(_optionsApiSettings, IntegrationDb.Database);
await _repository.InsertOneAsync(configUnits);
}
private ConfigUnitsRepository _repository;
private readonly ApiSettings _apiSettings = new()
{
ConfigUnits = "config_units"
};
private IOptions _optionsApiSettings;
///
/// Verifies that the repository's FindById method returns a non-null result when searching by the identifier "PV1".
///
[Test]
public async Task FindById_Find_id_Return_List()
{
var result = await _repository.FindById("PV1");
Assert.That(result, Is.Not.Null);
}
///
/// Verifies that returns null when invoked with an identifier ("PV2") that does not exist in the repository.
///
[Test]
public async Task FindAsync_not_Find_id_Return_Empty_List()
{
var result = await _repository.FindById("PV2");
Assert.That(result, Is.Null);
}
}