using System; using System.Threading.Tasks; using LCU.API.Internal.Operations.IncentiveApiLib.Repositories; using LCU.API.Internal.Operations.IncentiveApi.Services; using LCU.Library.Internal.IncentiveApiModels.Entities; using LCU.Library.Internal.IncentiveApiModels.Enums; using Moq; using NUnit.Framework; namespace Application.UnitTests.Services { public class ProcessorHistoryServiceTest { private ProcessorHistoryService _processorHistoryService; private Mock _mockRepository; public ProcessorHistoryServiceTest() { _mockRepository = new Mock(); _processorHistoryService = new ProcessorHistoryService(_mockRepository.Object, new Mock().Object); } [Test] public async Task GetProcessorHistory_OK() { _mockRepository.Setup(repo => repo.GetProcessorRunHistory(It.IsAny())).ReturnsAsync(new ProcessorHistoryRecord() { Process = Process.ImportCheckingAccountSalesFromDna, LastProcessedRecordId = 5 }).Verifiable(); var res = await _processorHistoryService.GetProcessorHistory(Process.ImportCheckingAccountSalesFromDna); Assert.AreEqual(Process.ImportCheckingAccountSalesFromDna, res.Process); Assert.AreEqual(5, res.LastProcessedRecordId); _mockRepository.Verify( x => x.GetProcessorRunHistory(It.Is(x => x == Process.ImportCheckingAccountSalesFromDna))); } [Test] public void GetProcessorHistory_Exception() { _mockRepository.Setup(repo => repo.GetProcessorRunHistory(It.IsAny())) .ThrowsAsync(new Exception("oops")); Assert.ThrowsAsync( async () => await _processorHistoryService.GetProcessorHistory(Process.ImportCheckingAccountSalesFromDna)); } [Test] public void SaveProcessorHistory_Exception() { _mockRepository.Setup(repo => repo.SaveProcessorRunHistory(It.IsAny())) .ThrowsAsync(new Exception("Oops")); Assert.ThrowsAsync( async () => await _processorHistoryService.SaveProcessorHistory(new ProcessorHistoryRecord() { LastProcessedRecordId = 100 })); } [Test] public async Task SaveProcessorHistory_OK() { _mockRepository.Setup(repo => repo.SaveProcessorRunHistory(It.IsAny())).ReturnsAsync(Process.ImportCheckingAccountSalesFromDna).Verifiable(); var res = await _processorHistoryService.SaveProcessorHistory(new ProcessorHistoryRecord() { LastProcessedRecordId = 100 }); Assert.AreEqual(Process.ImportCheckingAccountSalesFromDna, res); } } }