В процессе написания адаптер тестов
This commit is contained in:
@@ -6,9 +6,9 @@ namespace SquirrelContract.Infrastructure;
|
||||
|
||||
public class OperationResponse
|
||||
{
|
||||
protected HttpStatusCode StatusCode { get; set; }
|
||||
public HttpStatusCode StatusCode { get; set; }
|
||||
|
||||
protected object? Result { get; set; }
|
||||
public object? Result { get; set; }
|
||||
|
||||
public IActionResult GetResponse(HttpRequest request, HttpResponse response)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
using AutoMapper;
|
||||
using Moq;
|
||||
using SquirrelContract.AdapterContracts.OperationResponses;
|
||||
using SquirrelContract.BindingModels;
|
||||
using SquirrelContract.BusinessLogicContracts;
|
||||
using SquirrelContract.DataModels;
|
||||
using SquirrelContract.Exceptions;
|
||||
using SquirrelContract.ViewModels;
|
||||
using NUnit.Framework;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Net;
|
||||
|
||||
namespace SquirrelWebApi.Adapters.Tests
|
||||
{
|
||||
[TestFixture]
|
||||
public class WarehouseAdapterTests
|
||||
{
|
||||
private Mock<IWarehouseBusinessLogicContract> _businessLogicMock;
|
||||
private Mock<ILogger<WarehouseAdapter>> _loggerMock;
|
||||
private WarehouseAdapter _adapter;
|
||||
[OneTimeSetUp]
|
||||
public void OneTimeSetUp()
|
||||
{
|
||||
_businessLogicMock = new Mock<IWarehouseBusinessLogicContract>();
|
||||
_loggerMock = new Mock<ILogger<WarehouseAdapter>>();
|
||||
_adapter = new WarehouseAdapter(
|
||||
_businessLogicMock.Object,
|
||||
_loggerMock.Object);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetAllWarehouses_WhenWarehousesExist_ReturnOk()
|
||||
{
|
||||
// Arrange
|
||||
var warehouses = new List<WarehouseDataModel>
|
||||
{
|
||||
new WarehouseDataModel(Guid.NewGuid().ToString(), "Warehouse A", []),
|
||||
new WarehouseDataModel(Guid.NewGuid().ToString(), "Warehouse B", [])
|
||||
};
|
||||
|
||||
_businessLogicMock.Setup(x => x.GetAllWarehouses()).Returns(warehouses);
|
||||
|
||||
// Act
|
||||
var result = _adapter.GetAllWarehouses();
|
||||
var list = (List<WarehouseViewModel>)result.Result!;
|
||||
|
||||
// Assert
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.OK));
|
||||
Assert.That(list.Count, Is.EqualTo(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetAllWarehouses_WhenListNull_ThrowsNotFound()
|
||||
{
|
||||
// Arrange
|
||||
_businessLogicMock.Setup(x => x.GetAllWarehouses()).Throws(new NullListException());
|
||||
|
||||
// Act
|
||||
var result = _adapter.GetAllWarehouses();
|
||||
|
||||
// Assert
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void InsertWarehouse_ValidModel_ReturnsNoContent()
|
||||
{
|
||||
// Arrange
|
||||
var model = new WarehouseBindingModel
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
Name = "Test Name"
|
||||
};
|
||||
|
||||
// Act
|
||||
var result = _adapter.InsertWarehouse(model);
|
||||
|
||||
// Assert
|
||||
var statusCodeValue = (int)result.StatusCode;
|
||||
Assert.That(statusCodeValue, Is.EqualTo(204));
|
||||
var warehouse = new WarehouseDataModel(model.Id,
|
||||
model.Name,
|
||||
It.IsAny<List<WarehouseCocktailDataModel>>());
|
||||
_businessLogicMock.Verify(x => x.InsertWarehouse(
|
||||
It.Is<WarehouseDataModel>(w =>
|
||||
w.Id == model.Id &&
|
||||
w.Name == model.Name
|
||||
)), Times.Once);
|
||||
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void InsertWarehouse_ValidationException_ThrowsBadRequest()
|
||||
{
|
||||
var model = new WarehouseBindingModel { Id = "id", Name = "" };
|
||||
_businessLogicMock
|
||||
.Setup(x => x.InsertWarehouse(It.IsAny<WarehouseDataModel>()))
|
||||
.Throws(new ValidationException("Invalid"));
|
||||
|
||||
var result = _adapter.InsertWarehouse(model);
|
||||
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void DeleteWarehouse_ElementNotFound_ReturnsBadRequest()
|
||||
{
|
||||
_businessLogicMock
|
||||
.Setup(x => x.DeleteWarehouse(It.IsAny<string>()))
|
||||
.Throws(new ElementNotFoundException(""));
|
||||
|
||||
var result = _adapter.DeleteWarehouse("id");
|
||||
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DeleteWarehouse_StorageException_ReturnsBadRequest()
|
||||
{
|
||||
_businessLogicMock
|
||||
.Setup(x => x.DeleteWarehouse(It.IsAny<string>()))
|
||||
.Throws(new StorageException(new InvalidOperationException()));
|
||||
|
||||
var result = _adapter.DeleteWarehouse("id");
|
||||
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetWarehouseByData_ValidId_ReturnsWarehouse()
|
||||
{
|
||||
var id = "id";
|
||||
var data = new WarehouseDataModel(id, "Warehouse X", []);
|
||||
_businessLogicMock.Setup(x => x.GetWarehouseByData(id)).Returns(data);
|
||||
|
||||
var result = _adapter.GetWarehouseByData(id);
|
||||
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.OK));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetWarehouseByData_ElementNotFound_ReturnsNotFound()
|
||||
{
|
||||
var id = "missing-id";
|
||||
_businessLogicMock.Setup(x => x.GetWarehouseByData(id)).Throws(new ElementNotFoundException(""));
|
||||
|
||||
var result = _adapter.GetWarehouseByData(id);
|
||||
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetWarehouseByData_ArgumentNullException_ReturnsBadRequest()
|
||||
{
|
||||
_businessLogicMock.Setup(x => x.GetWarehouseByData(null)).Throws(new ArgumentNullException());
|
||||
|
||||
var result = _adapter.GetWarehouseByData(null);
|
||||
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetWarehouseByData_StorageException_ReturnsInternalServerError()
|
||||
{
|
||||
_businessLogicMock.Setup(x => x.GetWarehouseByData("id")).Throws(new StorageException(new InvalidOperationException()));
|
||||
|
||||
var result = _adapter.GetWarehouseByData("id");
|
||||
|
||||
Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.InternalServerError));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -210,10 +210,10 @@ internal class SupplyControllerTests : BaseWebApiControllerTest
|
||||
public async Task Put_WhenNoFoundRecord_ShouldBadRequest_Test()
|
||||
{
|
||||
//Arrange
|
||||
var furniture = CreateModel();
|
||||
var sale = CreateModel();
|
||||
SquirrelDbContext.InsertSupplyToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||
//Act
|
||||
var response = await HttpClient.PutAsync($"/api/supplies/changeinfo", MakeContent(furniture));
|
||||
var response = await HttpClient.PutAsync($"/api/supplies/changeinfo", MakeContent(sale));
|
||||
//Assert
|
||||
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user