using Moq; using NUnit.Framework; using LCU.API.Internal.Operations.IncentiveApi.Services; using LCU.API.Internal.Operations.IncentiveApi.Services.AutoDecision; using LCU.API.Internal.Operations.IncentiveApi.Services.ExternalActivity; using LCU.Library.Internal.IncentiveApiModels.Entities; using LCU.API.Internal.Operations.IncentiveApi.Models.ExternalActivities; using LCU.API.Internal.Operations.IncentiveApi.Exceptions; using LCU.Library.Internal.IncentiveApiModels.Enums; using System.Collections.Generic; using System; using System.Threading.Tasks; namespace Application.UnitTests.Services { public class DnaActivitySyncServiceTest { private Mock _mockActivityService; private Mock _mockActivityDecisionService; private Mock _mockExternalActivityservice; private Mock _mockProcessorHistoryService; private DnaActivitySyncService _dnaSyncService; private Mock _mockDeadActivityService; // [SetUp] // public void Setup() // { // _mockActivityService = new Mock(); // _mockActivityDecisionService = new Mock(); // _mockProcessorHistoryService = new Mock(); // _mockExternalActivityservice = new Mock(); // _mockDeadActivityService = new Mock(); // _dnaSyncService = new DnaActivitySyncService( // _mockActivityService.Object, // _mockProcessorHistoryService.Object, // _mockActivityDecisionService.Object, // _mockDeadActivityService.Object, // _mockExternalActivityservice.Object); // } // [Test] // public async Task HandleIncomingActivityDecision_SaveDeadActivity_OK() // { // _mockActivityService.Setup(x => x.SaveActivityAsync(It.IsAny())) // .ThrowsAsync(new DeadActivityException("Missing Employee ID")); // _mockDeadActivityService.Setup(x => x.SaveDeadActivity(It.IsAny())) // .ReturnsAsync(new DeadActivity("6", SystemType.Dna, DeadActivityReason.Other, "Test") { Id = 5 }); // var testActivity = new Activity() // { // SourceId = "10", // Detail = new ActivityDetail() // { // AccountNumber = "12345" // }, // EmployeeId = null, // DepartmentId = -1, // EmployeeEmail = "Test@test.com" // }; // await _dnaSyncService.HandleIncomingActivityDecision(testActivity, Product.NewChecking, ActivityType.Sale); // _mockDeadActivityService.Verify(x => x.SaveDeadActivity(It.Is(x => // x.Reason == DeadActivityReason.MissingRequiredField && // x.ReasonNote == "Missing Employee ID" && // x.SourceId == "10" && // x.DeadDetail.AccountNumber == "12345" && // x.EmployeeId == null && // x.DepartmentId == null && // x.EmployeeEmail == "Test@test.com" // )), Times.Once); // } // [Test] // public async Task HandleMapExternalActivities_OK() // { // var activities = // new List() // { // new NewLoanSaleActivity() // { // ActivityNbr = 5, // MinorAccountType = "DV01" // }, // new NewLoanSaleActivity() // { // ActivityNbr = 6, // MinorAccountType = "DV01" // }, // new NewLoanSaleActivity() // { // ActivityNbr = 7, // MinorAccountType = "DV01" // } // }; // var result = await _dnaSyncService.HandleMapExternalActivities(activities, Product.Vehicle, ActivityType.Sale); // Assert.NotNull(result); // } // [Test] // public async Task UpdateProcessorHistory_Ok() // { // var testProcess = new ProcessorHistoryRecord() // { // Process = Process.ImportAtmCheckCardSalesFromDna, // LastProcessedRecordId = 200, // LastProcessedRecordTimestamp = DateTime.Parse("2021-07-10"), // LastSuccessfulRunTime = DateTime.Parse("2021-07-10") // }; // _mockProcessorHistoryService.Setup(x => x.GetProcessorHistory(It.IsAny())).ReturnsAsync(testProcess).Verifiable(); // await _dnaSyncService.UpdateProcessorHistory(Process.ImportAtmCheckCardSalesFromDna, 200, DateTime.Parse("2021-07-10")); // _mockProcessorHistoryService.Verify(mock => mock.SaveProcessorHistory(It.IsAny()), Times.Once); // } // [Test] // public async Task RunLatestDnaActivitySales_No_New_Activities() // { // _mockProcessorHistoryService.Setup(x => x.GetProcessorHistory(It.IsAny())).ReturnsAsync( // new ProcessorHistoryRecord() // { // Process = Process.ImportAtmCheckCardSalesFromDna, // LastProcessedRecordId = 200, // LastProcessedRecordTimestamp = DateTime.Parse("2021-07-10"), // LastSuccessfulRunTime = DateTime.Parse("2021-07-10") // }).Verifiable(); // _mockActivityService.Setup( // x => x.FilterExternalActivitiesByExistingSourceId(It.IsAny>())).ReturnsAsync(new List() { }); // var result = await _dnaSyncService.GetLastActivityProcessedData(Process.ImportAtmCheckCardSalesFromDna); // Assert.NotNull(result); // _mockProcessorHistoryService.Verify(x => x.GetProcessorHistory(It.Is(process => process == Process.ImportAtmCheckCardSalesFromDna)), Times.Once); // _mockProcessorHistoryService.Verify(x => x.GetProcessorHistory(It.IsAny()), Times.Once); // _mockProcessorHistoryService.Verify(mock => mock.SaveProcessorHistory(It.IsAny()), Times.Never); // } } }