В процессе написания адаптер тестов
This commit is contained in:
@@ -6,9 +6,9 @@ namespace SquirrelContract.Infrastructure;
|
|||||||
|
|
||||||
public class OperationResponse
|
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)
|
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()
|
public async Task Put_WhenNoFoundRecord_ShouldBadRequest_Test()
|
||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var furniture = CreateModel();
|
var sale = CreateModel();
|
||||||
SquirrelDbContext.InsertSupplyToDatabaseAndReturn(Guid.NewGuid().ToString());
|
SquirrelDbContext.InsertSupplyToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
//Act
|
//Act
|
||||||
var response = await HttpClient.PutAsync($"/api/supplies/changeinfo", MakeContent(furniture));
|
var response = await HttpClient.PutAsync($"/api/supplies/changeinfo", MakeContent(sale));
|
||||||
//Assert
|
//Assert
|
||||||
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user