Files
2026-04-20 14:47:24 -05:00

278 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using System.Linq;
using Moq;
using LCU.Shared.Collections.RepoApiLib.Repositories;
using LCU.Shared.Collections.RepoApiLib.Models;
using LCU.API.Collections.RepoApi.Services;
using LCU.API.Collections.RepoApi.Exceptions;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace LCU.API.Collections.RepoApiTests.Services
{
public class CollateralServiceTests
{
[Fact]
public async void ListAll_Ok()
{
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.ListAllAsync()).ReturnsAsync(new List<Collateral>() { new Collateral() { }, new Collateral() { } });
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
var res = await collateralService.ListAll();
Assert.NotNull(res);
Assert.Equal(2, res.Count());
}
[Fact]
public async System.Threading.Tasks.Task ListAll_Exception()
{
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.ListAllAsync()).ThrowsAsync(new Exception("oops"));
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
await Assert.ThrowsAsync<ServerErrorException>(() => collateralService.ListAll());
}
[Fact]
public async void SaveAsync_Ok()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.AddAsync(It.IsAny<Collateral>())).ReturnsAsync(collateral);
_mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask);
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
var res = await collateralService.SaveAsync(collateral);
Assert.Equal(collateral, res);
}
[Fact]
public async void SaveAsync_Exception()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.AddAsync(It.Is<Collateral>(param => param == collateral))).ThrowsAsync(new Exception("oops"));
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
await Assert.ThrowsAsync<ServerErrorException>(async () => await collateralService.SaveAsync(collateral));
}
[Fact]
public async void Get_Exception()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.FindByIdAsync(It.IsAny<int>())).ThrowsAsync(new Exception("oops"));
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
await Assert.ThrowsAsync<ServerErrorException>(async () => await collateralService.Get(12345));
}
[Fact]
public async void Get_Null_Exception()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.FindByIdAsync(It.IsAny<int>())).Returns(Task.FromResult<Collateral>(null));
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
await Assert.ThrowsAsync<NotFoundException>(async () => await collateralService.Get(12345));
}
[Fact]
public async void Get_Ok()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.FindByIdAsync(It.IsAny<int>())).ReturnsAsync(collateral);
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
var res = await collateralService.Get(12345);
Assert.Equal(collateral, res);
}
[Fact]
public async void UpdateAsync_Ok()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345,
Vin = "r2d2c3p0",
Year = 10,
Description = "starfighter of choice for the Galactic Empire",
VehicleType = 5,
Inoperable = false,
CollateralTypeId = 1,
RetitledInLandmarkName = DateTime.Now
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.FindByIdAsync(It.IsAny<int>())).ReturnsAsync(collateral);
_mockCollateralRepo.Setup(repo => repo.Update(It.Is<Collateral>(param => param.Vin == "r2d2c3p0")));
_mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask);
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
var res = await collateralService.UpdateAsync(collateral);
Assert.Equal(collateral, res);
}
[Fact]
public async void UpdateAsync_Existing_Null()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345,
Vin = "r2d2c3p0",
Year = 10,
Description = "starfighter of choice for the Galactic Empire",
VehicleType = 5,
Inoperable = false,
CollateralTypeId = 1,
RetitledInLandmarkName = DateTime.Now
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.FindByIdAsync(It.IsAny<int>())).Returns(Task.FromResult<Collateral>(null));
_mockCollateralRepo.Setup(repo => repo.Update(It.Is<Collateral>(param => param.Vin == "r2d2c3p0")));
_mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask);
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
await Assert.ThrowsAsync<NotFoundException>(async () => await collateralService.UpdateAsync(collateral));
}
[Fact]
public async void UpdateAsync_Existing_Exception()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345,
Vin = "r2d2c3p0",
Year = 10,
Description = "starfighter of choice for the Galactic Empire",
VehicleType = 5,
Inoperable = false,
CollateralTypeId = 1,
RetitledInLandmarkName = DateTime.Now
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.FindByIdAsync(It.IsAny<int>())).ThrowsAsync(new Exception("oops"));
_mockCollateralRepo.Setup(repo => repo.Update(It.Is<Collateral>(param => param.Vin == "r2d2c3p0")));
_mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask);
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
await Assert.ThrowsAsync<ServerErrorException>(async () => await collateralService.UpdateAsync(collateral));
}
[Fact]
public async void UpdateAsync_Update_Exception()
{
Collateral collateral = new Collateral()
{
Make = "Sienar Fleet Systems",
Model = "TIE/ln space superiority starfighter",
BodyStyle = "Starfighter",
CollateralId = 12345,
Vin = "r2d2c3p0",
Year = 10,
Description = "starfighter of choice for the Galactic Empire",
VehicleType = 5,
Inoperable = false,
CollateralTypeId = 1,
RetitledInLandmarkName = DateTime.Now
};
var _mockCollateralRepo = new Mock<ICollateralRepository>();
var _mockUnitOfWork = new Mock<IUnitOfWork>();
_mockCollateralRepo.Setup(repo => repo.FindByIdAsync(It.IsAny<int>())).ReturnsAsync(collateral);
_mockCollateralRepo.Setup(repo => repo.Update(It.Is<Collateral>(param => param.Vin == "r2d2c3p0"))).Throws(new Exception("oops"));
_mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask);
CollateralService collateralService = new CollateralService(_mockCollateralRepo.Object, _mockUnitOfWork.Object);
await Assert.ThrowsAsync<ServerErrorException>(async () => await collateralService.UpdateAsync(collateral));
}
}
}