diff --git a/SquirrelContract/SquirrelContract/Infastructure/OperationResponse.cs b/SquirrelContract/SquirrelContract/Infastructure/OperationResponse.cs index a848198..07cd33f 100644 --- a/SquirrelContract/SquirrelContract/Infastructure/OperationResponse.cs +++ b/SquirrelContract/SquirrelContract/Infastructure/OperationResponse.cs @@ -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) { diff --git a/SquirrelContract/SquirrelTests/WebApiAdaptersTests/WarehouseAdapterTests.cs b/SquirrelContract/SquirrelTests/WebApiAdaptersTests/WarehouseAdapterTests.cs new file mode 100644 index 0000000..a519006 --- /dev/null +++ b/SquirrelContract/SquirrelTests/WebApiAdaptersTests/WarehouseAdapterTests.cs @@ -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 _businessLogicMock; + private Mock> _loggerMock; + private WarehouseAdapter _adapter; + [OneTimeSetUp] + public void OneTimeSetUp() + { + _businessLogicMock = new Mock(); + _loggerMock = new Mock>(); + _adapter = new WarehouseAdapter( + _businessLogicMock.Object, + _loggerMock.Object); + } + + [Test] + public void GetAllWarehouses_WhenWarehousesExist_ReturnOk() + { + // Arrange + var warehouses = new List + { + 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)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>()); + _businessLogicMock.Verify(x => x.InsertWarehouse( + It.Is(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())) + .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())) + .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())) + .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)); + } + + } +} diff --git a/SquirrelContract/SquirrelTests/WebApiControllersTests/SupplyControllerTests.cs b/SquirrelContract/SquirrelTests/WebApiControllersTests/SupplyControllerTests.cs index 87af2a3..4eae563 100644 --- a/SquirrelContract/SquirrelTests/WebApiControllersTests/SupplyControllerTests.cs +++ b/SquirrelContract/SquirrelTests/WebApiControllersTests/SupplyControllerTests.cs @@ -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)); }