using System; using System.Collections.Generic; using System.Text; using Xunit; using Moq; using LCU.Shared.Collections.RepoApiLib.Repositories; using Xunit.Sdk; using LCU.API.Collections.RepoApi.Services; using LCU.Shared.Collections.RepoApiLib.Models; using System.Linq; using LCU.API.Collections.RepoApi.Exceptions; using System.Threading.Tasks; using Castle.Core.Resource; using System.Runtime.CompilerServices; using System.IO; namespace LCU.API.Collections.RepoApiTests.Services { public class ImsAutoFileDataServiceTests { [Fact] public async void ListAll_Ok() { var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.ListAllAsync()).ReturnsAsync(new List() { new ImsAutoFileData() { } }); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); var res = await imsAutoFileDataService.ListAll(); Assert.NotNull(res); Assert.Single(res); } [Fact] public async void ListAll_Exception() { var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.ListAllAsync()).ThrowsAsync(new Exception("oops")); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.ListAll()); } [Fact] public async void SaveAsync_Ok() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 5 }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.AddAsync(It.IsAny())).Returns(Task.CompletedTask); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); var res = await imsAutoFileDataService.SaveAsync(filedata); Assert.NotNull(res); Assert.Equal(5,res.RepoId); } [Fact] public async void SaveAsync_Exception() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 5 }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.AddAsync(It.IsAny())).ThrowsAsync(new Exception("oops")); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.SaveAsync(filedata)); } [Fact] public async void Get_Exception() { var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).ThrowsAsync(new Exception("oops")); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.Get("VinNumber", 12345)); } [Fact] public async void Get_Null_Exception() { var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(null)); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.Get("VinNumber", 12345)); } [Fact] public async void Get_Ok() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 5, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).ReturnsAsync(filedata); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); var res = await imsAutoFileDataService.Get("VinNumber", 12345); Assert.NotNull(res); Assert.Equal(filedata, res); } [Fact] public async void GetByAuctionAssignmentId_Exception() { var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByAuctionAssignmentIdAsync(It.IsAny())).ThrowsAsync(new Exception("oops")); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.GetByAuctionAssignmentId(12345)); } [Fact] public async void GetByAuctionAssignmentId_Null_Exception() { var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByAuctionAssignmentIdAsync(It.IsAny())).Returns(Task.FromResult(null)); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.GetByAuctionAssignmentId(12345)); } [Fact] public async void GetByAuctionAssignmentId_Ok() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByAuctionAssignmentIdAsync(It.IsAny())).ReturnsAsync(filedata); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); var res = await imsAutoFileDataService.GetByAuctionAssignmentId(12345); Assert.NotNull(res); Assert.Equal(filedata, res); } [Fact] public async void UpdateAsync_Ok() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).ReturnsAsync(filedata); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); _mockImsAutoFileDataRepo.Setup(repo => repo.Update(It.IsAny())); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); var res = await imsAutoFileDataService.UpdateAsync(filedata); Assert.NotNull(res); Assert.Equal(filedata, res); } [Fact] public async void UpdateAsync_Null_Exception() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(null)); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); _mockImsAutoFileDataRepo.Setup(repo => repo.Update(It.IsAny())); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.UpdateAsync(filedata)); } [Fact] public async void UpdateAsync_Existing_Exception() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).ThrowsAsync(new Exception("oops")); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); _mockImsAutoFileDataRepo.Setup(repo => repo.Update(It.IsAny())); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.UpdateAsync(filedata)); } [Fact] public async void UpdateAsync_Update_Exception() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).ReturnsAsync(filedata); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); _mockImsAutoFileDataRepo.Setup(repo => repo.Update(It.IsAny())).Throws(new Exception("oops")); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.UpdateAsync(filedata)); } [Fact] public async void DeleteAsync_Ok() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).ReturnsAsync(filedata); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); _mockImsAutoFileDataRepo.Setup(repo => repo.Remove(It.IsAny())); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); var res = await imsAutoFileDataService.DeleteAsync("vin",5); Assert.NotNull(res); Assert.Equal(filedata, res); } [Fact] public async void DeleteAsync_Null_Exception() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).Returns(Task.FromResult(null)); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); _mockImsAutoFileDataRepo.Setup(repo => repo.Remove(It.IsAny())); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.DeleteAsync("vin", 5)); } [Fact] public async void DeleteAsync_Existing_Exception() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).ThrowsAsync(new Exception("oops")); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); _mockImsAutoFileDataRepo.Setup(repo => repo.Remove(It.IsAny())); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.DeleteAsync("vin", 5)); } [Fact] public async void DeleteAsync_Update_Exception() { ImsAutoFileData filedata = new ImsAutoFileData() { RepoId = 12345, VIN = "VinNumber" }; var _mockImsAutoFileDataRepo = new Mock(); var _mockUnitOfWork = new Mock(); _mockImsAutoFileDataRepo.Setup(repo => repo.FindByIdAsync(It.IsAny(), It.IsAny())).ReturnsAsync(filedata); _mockUnitOfWork.Setup(mock => mock.CompleteAsync()).Returns(Task.CompletedTask); _mockImsAutoFileDataRepo.Setup(repo => repo.Remove(It.IsAny())).Throws(new Exception("oops")); ImsAutoFileDataService imsAutoFileDataService = new ImsAutoFileDataService(_mockImsAutoFileDataRepo.Object, _mockUnitOfWork.Object); await Assert.ThrowsAsync(async () => await imsAutoFileDataService.DeleteAsync("vin", 5)); } } }