Первый пласт тестов готов

This commit is contained in:
Tonb73 2025-02-18 11:19:18 +03:00
parent f16055973e
commit e24689ed30
3 changed files with 50 additions and 9 deletions

View File

@ -1,37 +1,71 @@
using PapaCarloContracts.BusinessLogicContracts;
using Microsoft.Extensions.Logging;
using PapaCarloContracts.BusinessLogicContracts;
using PapaCarloContracts.DataModels;
using PapaCarloContracts.Exceptions;
using PapaCarloContracts.Extensions;
using PapaCarloContracts.StoragesContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
namespace PapaCarloBusinessLogic.Implementations
{
internal class BlankBusinessLogicContract(IBlankStorageContract storageContract) : IBlankBusinessLogicContract
internal class BlankBusinessLogicContract(IBlankStorageContract blankStorageContract, ILogger logger) : IBlankBusinessLogicContract
{
private IBlankStorageContract _storageContract = storageContract;
private readonly ILogger _logger = logger;
private IBlankStorageContract _blankStorageContract = blankStorageContract;
public void DeleteBlank(string id)
{
_logger.LogInformation("Delete by id: {id}", id);
if (id.IsEmpty())
{
throw new ArgumentNullException(nameof(id));
}
if (!id.IsGuid())
{
throw new ValidationException("Id is not a unique identifier");
}
_blankStorageContract.DelElement(id);
}
public List<BlankDataModel> GetAllBlanks()
{
return [];
_logger.LogInformation("GetAllBlanks");
return _blankStorageContract.GetList() ?? throw new NullListException();
}
public BlankDataModel GetBlankByData(string data)
{
return new("", "", "", "");
_logger.LogInformation("Get element by data {data}", data);
if (data.IsEmpty())
{
throw new ArgumentNullException(nameof(data));
}
if (data.IsGuid())
{
return _blankStorageContract.GetElementById(data) ?? throw new ElementNotFoundException(data);
}
return _blankStorageContract.GetElementByName(data) ?? throw new ElementNotFoundException(data);
}
public void InsertBlank(BlankDataModel blankDataModel)
{
_logger.LogInformation("New data:{json}", JsonSerializer.Serialize(blankDataModel));
ArgumentNullException.ThrowIfNull(blankDataModel);
blankDataModel.Validate();
_blankStorageContract.AddElement(blankDataModel);
}
public void UpdateBlank(BlankDataModel blankDataModel)
{
_logger.LogInformation("Update data: {json}", JsonSerializer.Serialize(blankDataModel));
ArgumentNullException.ThrowIfNull(blankDataModel);
blankDataModel.Validate();
_blankStorageContract.UpdElement(blankDataModel);
}
}

View File

@ -10,6 +10,10 @@
<InternalsVisibleTo Include="PapaCarloTests" />
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\PapaCarloContracts\PapaCarloContracts.csproj" />

View File

@ -1,4 +1,6 @@
using Moq;

using Microsoft.Extensions.Logging;
using Moq;
using NUnit.Framework;
using PapaCarloBusinessLogic.Implementations;
using PapaCarloContracts.BusinessLogicContracts;
@ -16,14 +18,15 @@ namespace PapaCarloTests.BusinessLogicsContracts;
[TestFixture]
internal class BlankBusinessLogicContractTests
{
private IBlankBusinessLogicContract _blankBusinessLogicContract;
private BlankBusinessLogicContract _blankBusinessLogicContract;
private Mock<IBlankStorageContract> _blankStorageContract;
[OneTimeSetUp]
public void OneTimeSetUp()
{
_blankStorageContract = new Mock<IBlankStorageContract>();
_blankBusinessLogicContract = new BlankBusinessLogicContract(_blankStorageContract.Object);
_blankBusinessLogicContract = new BlankBusinessLogicContract(_blankStorageContract.Object, new Mock<ILogger>().Object);
}
[SetUp]
@ -221,7 +224,7 @@ internal class BlankBusinessLogicContractTests
{
_blankStorageContract.Setup(x => x.UpdElement(It.IsAny<BlankDataModel>())).Throws(new ElementExistsException("Data","Data"));
Assert.That(() => _blankBusinessLogicContract.UpdateBlank(new(Guid.NewGuid().ToString(), "Spruce", "", "")), Throws.TypeOf<ElementNotFoundException>());
Assert.That(() => _blankBusinessLogicContract.UpdateBlank(new(Guid.NewGuid().ToString(), "Spruce", "", "")), Throws.TypeOf<ElementExistsException>());
_blankStorageContract.Verify(x => x.UpdElement(It.IsAny<BlankDataModel>()), Times.Once);
}
[Test]