using adas_core.Application.Repositories.Interfaces;
using adas_core.Domain.Models.MongoModels;
using Microsoft.Extensions.Logging;
using MongoDB.Bson;
using Moq;
using ServiceConfigService = adas_core.Application.Services.ServiceConfigService;
namespace adas_core.Test.Services;
[TestFixture]
public class ServiceConfigServiceTest
{
///
/// Initializes the test environment by creating mock instances of the service configuration repository and logger, and instantiating the under test.
///
[SetUp]
public void Setup()
{
_serviceConfigRepositoryMock = new Mock();
_logger = new Mock>();
_serviceConfigService = new ServiceConfigService(
_serviceConfigRepositoryMock.Object,
_logger.Object
);
}
private ServiceConfigService _serviceConfigService;
private Mock _serviceConfigRepositoryMock;
private Mock> _logger;
private static ObjectId _id = ObjectId.GenerateNewId();
///
/// Verifies that the service returns a instance
/// when retrieving an existing configuration by its string identifier.
///
[Test]
public async Task Get_Find_Id_Return_ServiceConfig()
{
var serviceConfig = new ServiceConfig
{
StrId = _id.ToString()
};
_serviceConfigRepositoryMock.Setup(s => s.FindById(_id.ToString())).ReturnsAsync(serviceConfig);
var result = await _serviceConfigService.Get(serviceConfig.StrId);
Assert.That(result, Is.Not.Null);
}
///
/// Verifies that the Get method returns a when the specified id is not found by the repository's FindById, falling back to a lookup with any .
///
[Test]
public async Task Get_Not_Find_Id_Return_ServiceConfig()
{
var serviceConfig = new ServiceConfig
{
StrId = _id.ToString()
};
_serviceConfigRepositoryMock.Setup(s => s.FindById(_id)).ReturnsAsync((ServiceConfig?)null);
_serviceConfigRepositoryMock.Setup(s => s.FindById(It.IsAny())).ReturnsAsync(serviceConfig);
var result = await _serviceConfigService.Get(_id.ToString());
Assert.That(result, Is.Not.Null);
}
}