using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using LCU.Api.Internal.CoreApiWrapper.Services; using LCU.Library.Internal.CoreApiWrapperLib.DataAccess; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Activity; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Tax; using LCU.Library.Internal.CoreApiWrapperModel.LcuModels.Activity; using LCU.Library.Internal.Exceptions; using Moq; using NUnit.Framework; using FailedToParseException = LCU.Library.Internal.CoreApiWrapperLib.Exceptions.FailedToParseException; namespace LCU.Api.Internal.CoreApiWrapperTest.Service { public class ActivityServiceTest { private ActivityService _activityService; private Mock _mockTaxService; private Mock _mockActivityDao; [SetUp] public void SetUp() { _mockActivityDao = new Mock(); _mockTaxService = new Mock(); _activityService = new ActivityService(_mockActivityDao.Object, _mockTaxService.Object); _mockActivityDao.Setup(x => x.GetNewCheckingActivities(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewCheckingAccountActivity() { ActivityNbr = 1 }, new NewCheckingAccountActivity() { ActivityNbr = 2 }, new NewCheckingAccountActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewCheckingActivitiesNewerThanDate(It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewCheckingAccountActivity() { ActivityNbr = 1 }, new NewCheckingAccountActivity() { ActivityNbr = 2 }, new NewCheckingAccountActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewCheckingActivitiesAfterActivityNbr(It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewCheckingAccountActivity() { ActivityNbr = 1 }, new NewCheckingAccountActivity() { ActivityNbr = 2 }, new NewCheckingAccountActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewAtmCheckCardActivities(It.IsAny(), It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewAtmCheckCardActivity() { ActivityNbr = 1 }, new NewAtmCheckCardActivity() { ActivityNbr = 2 }, new NewAtmCheckCardActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewAtmCheckCardActivitiesNewerThanDate(It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewAtmCheckCardActivity() { ActivityNbr = 1 }, new NewAtmCheckCardActivity() { ActivityNbr = 2 }, new NewAtmCheckCardActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewAtmCheckCardActivitiesAfterActivityNbr(It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewAtmCheckCardActivity() { ActivityNbr = 1 }, new NewAtmCheckCardActivity() { ActivityNbr = 2 }, new NewAtmCheckCardActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewActivityManagerReferrals(It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewActivityManagerIncentiveReferral() { ActivityId = 1 }, new NewActivityManagerIncentiveReferral() { ActivityId = 2 }, new NewActivityManagerIncentiveReferral() { ActivityId = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.QueryActivityManagerActivity(It.IsAny())).ReturnsAsync( new List() { new NewActivityManagerIncentiveReferral() { ActivityId = 1 }, new NewActivityManagerIncentiveReferral() { ActivityId = 2 }, new NewActivityManagerIncentiveReferral() { ActivityId = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewActivityManagerReferralsNewerThan(It.IsAny())).ReturnsAsync( new List() { new NewActivityManagerIncentiveReferral() { ActivityId = 1 }, new NewActivityManagerIncentiveReferral() { ActivityId = 2 }, new NewActivityManagerIncentiveReferral() { ActivityId = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewActivityManagerReferralsAfterActivityId(It.IsAny())).ReturnsAsync( new List() { new NewActivityManagerIncentiveReferral() { ActivityId = 1 }, new NewActivityManagerIncentiveReferral() { ActivityId = 2 }, new NewActivityManagerIncentiveReferral() { ActivityId = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewMortgageSaleActivities(It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewLoanSaleActivity() { ActivityNbr = 1 }, new NewLoanSaleActivity() { ActivityNbr = 2 }, new NewLoanSaleActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewVehicleSaleActivities(It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewLoanSaleActivity() { ActivityNbr = 1 }, new NewLoanSaleActivity() { ActivityNbr = 2 }, new NewLoanSaleActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetNewDebtProtectedLoanSaleActivities(It.IsAny(), It.IsAny())).ReturnsAsync( new List() { new NewLoanSaleActivity() { ActivityNbr = 1 }, new NewLoanSaleActivity() { ActivityNbr = 2 }, new NewLoanSaleActivity() { ActivityNbr = 3 } }).Verifiable(); _mockActivityDao.Setup(x => x.GetEStatementDeliveryActivity(It.IsAny())).ReturnsAsync( new List() { new EStatementDeliveryMethod() { ActivityNumber = 1 }, new EStatementDeliveryMethod() { ActivityNumber = 2 }, new EStatementDeliveryMethod() { ActivityNumber = 3 } }).Verifiable(); } [Test] public async Task GetNewCheckingAccountActivities_Both_Ok() { var results = await _activityService.GetNewCheckingAccountActivities("2020-04-15T11:00:00", 5, 100); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewCheckingActivities( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5), 100)); _mockActivityDao.Verify(x => x.GetNewCheckingActivities(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); _mockActivityDao.Verify(x => x.GetNewCheckingActivitiesAfterActivityNbr(It.IsAny(), It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewCheckingActivitiesNewerThanDate(It.IsAny(), It.IsAny()), Times.Never); } [Test] public async Task GetNewCheckingAccountActivities_No_ActvNbr_Ok() { var results = await _activityService.GetNewCheckingAccountActivities("2020-04-15T11:00:00", null, 100); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewCheckingActivitiesNewerThanDate( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), 100)); _mockActivityDao.Verify(x => x.GetNewCheckingActivities(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewCheckingActivitiesAfterActivityNbr(It.IsAny(), It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewCheckingActivitiesNewerThanDate(It.IsAny(), It.IsAny()), Times.Once); } [Test] public async Task GetNewCheckingAccountActivities_No_Date_Ok() { var results = await _activityService.GetNewCheckingAccountActivities(null, 5, 100); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewCheckingActivitiesAfterActivityNbr(It.Is(nbr => nbr == 5), 100)); } [Test] public async Task GetNewCheckingAccountActivities_No_Params_Exception() { Assert.ThrowsAsync(async () => await _activityService.GetNewCheckingAccountActivities(null, null, 100)); } [Test] public async Task GetNewCheckingAccountActivities_FailedToParse_BadDateTime() { Assert.ThrowsAsync(async () => await _activityService.GetNewCheckingAccountActivities("DateTimes are a Devs Best Friend", 1, 100)); Assert.ThrowsAsync(async () => await _activityService.GetNewCheckingAccountActivities("DateTimes are a Devs Best Friend", null, 100)); } [Test] public async Task GetNewCheckingAccountActivities_Exception() { _mockActivityDao.Setup(x => x.GetNewCheckingActivities(It.IsAny(), It.IsAny(), It.IsAny())).Throws(new Exception("Oops")); Assert.ThrowsAsync(async () => await _activityService.GetNewCheckingAccountActivities("2020-04-15T11:00:00", 10, 100)); } [Test] public async Task GetNewAtmCheckCardActivities_Both_Ok() { var results = await _activityService.GetNewAtmCheckCardActivities("2020-04-15T11:00:00", 5, 100); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivities( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5), 100)); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivities(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivitiesAfterActivityNbr(It.IsAny(), It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivitiesNewerThanDate(It.IsAny(), It.IsAny()), Times.Never); } [Test] public async Task GetNewAtmCheckCardActivities_No_ActvNbr_Ok() { var results = await _activityService.GetNewAtmCheckCardActivities("2020-04-15T11:00:00", null, 100); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivitiesNewerThanDate( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), 100)); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivities(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivitiesAfterActivityNbr(It.IsAny(), It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivitiesNewerThanDate(It.IsAny(), It.IsAny()), Times.Once); } [Test] public async Task GetNewAtmCheckCardActivities_No_Date_Ok() { var results = await _activityService.GetNewAtmCheckCardActivities(null, 5, 100); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewAtmCheckCardActivitiesAfterActivityNbr(It.Is(nbr => nbr == 5), 100)); } [Test] public async Task GetNewAtmCheckCardActivities_No_Params_Exception() { Assert.ThrowsAsync(async () => await _activityService.GetNewAtmCheckCardActivities(null, null, 100)); } [Test] public async Task GetNewAtmCheckCardActivities_FailedToParse_BadDateTime() { Assert.ThrowsAsync(async () => await _activityService.GetNewAtmCheckCardActivities("DateTimes are a Devs Best Friend", 1, 100)); Assert.ThrowsAsync(async () => await _activityService.GetNewAtmCheckCardActivities("DateTimes are a Devs Best Friend", null, 100)); } [Test] public async Task GetNewAtmCheckCardActivities_Exception() { _mockActivityDao.Setup(x => x.GetNewAtmCheckCardActivities(It.IsAny(), It.IsAny(), It.IsAny())).Throws(new Exception("Oops")); Assert.ThrowsAsync(async () => await _activityService.GetNewAtmCheckCardActivities("2020-04-15T11:00:00", 10, 100)); } [Test] public async Task GetNewEDeliveryStatementSaleActivities_Ok() { var results = await _activityService.GetEStatementDeliveryActivity("2020-04-15T11:00:00"); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNumber == 1)); Assert.True(results.Any(x => x.ActivityNumber == 2)); Assert.True(results.Any(x => x.ActivityNumber == 3)); _mockActivityDao.Verify(x => x.GetEStatementDeliveryActivity( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0) )); _mockActivityDao.Verify(x => x.GetEStatementDeliveryActivity(It.IsAny()), Times.Once); } [Test] public async Task GetNewEDeliveryStatementSaleActivities_Exception() { _mockActivityDao.Setup(x => x.GetEStatementDeliveryActivity(It.IsAny())).Throws(new Exception("Oops")); Assert.ThrowsAsync(async () => await _activityService.GetEStatementDeliveryActivity("2020-04-15T11:00:00")); } [Test] public async Task GetNewActivityManagerIncentiveReferrals_Both_Ok() { var results = await _activityService.GetNewActivityManagerIncentiveReferrals("2020-04-15T11:00:00", 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityId == 1)); Assert.True(results.Any(x => x.ActivityId == 2)); Assert.True(results.Any(x => x.ActivityId == 3)); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferrals( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5))); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferrals(It.IsAny(), It.IsAny()), Times.Once); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferralsAfterActivityId(It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferralsNewerThan(It.IsAny()), Times.Never); } [Test] public async Task GetNewActivityManagerIncentiveReferrals_No_ActvNbr_Ok() { var results = await _activityService.GetNewActivityManagerIncentiveReferrals("2020-04-15T11:00:00", null); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityId == 1)); Assert.True(results.Any(x => x.ActivityId == 2)); Assert.True(results.Any(x => x.ActivityId == 3)); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferralsNewerThan( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0))); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferrals(It.IsAny(), It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferralsAfterActivityId(It.IsAny()), Times.Never); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferralsNewerThan(It.IsAny()), Times.Once); } [Test] public async Task GetNewActivityManagerIncentiveReferrals_No_Date_Ok() { var results = await _activityService.GetNewActivityManagerIncentiveReferrals(null, 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityId == 1)); Assert.True(results.Any(x => x.ActivityId == 2)); Assert.True(results.Any(x => x.ActivityId == 3)); _mockActivityDao.Verify(x => x.GetNewActivityManagerReferralsAfterActivityId( It.Is(nbr => nbr == 5))); } [Test] public async Task GetNewActivityManagerIncentiveReferrals_No_Params_Exception() { Assert.ThrowsAsync(async () => await _activityService.GetNewActivityManagerIncentiveReferrals(null, null)); } [Test] public async Task GetNewActivityManagerIncentiveReferrals_FailedToParse_BadDateTime() { Assert.ThrowsAsync(async () => await _activityService.GetNewActivityManagerIncentiveReferrals("DateTimes are a Devs Best Friend", 1)); Assert.ThrowsAsync(async () => await _activityService.GetNewActivityManagerIncentiveReferrals("DateTimes are a Devs Best Friend", null)); } [Test] public async Task GetNewActivityManagerIncentiveReferrals_Exception() { _mockActivityDao.Setup(x => x.GetNewActivityManagerReferrals(It.IsAny(), It.IsAny())).Throws(new Exception("Oops")); Assert.ThrowsAsync(async () => await _activityService.GetNewActivityManagerIncentiveReferrals("2020-04-15T11:00:00", 10)); } [Test] public async Task GetNewMortgageSalesActivities_Ok() { var results = await _activityService.GetNewMortgageSaleActivities("2020-04-15T11:00:00", 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewMortgageSaleActivities( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5))); _mockActivityDao.Verify(x => x.GetNewMortgageSaleActivities(It.IsAny(), It.IsAny()), Times.Once); } [Test] public async Task GetNewMortgageSaleActivities_No_ActvNbr_Ok() { var results = await _activityService.GetNewMortgageSaleActivities("2020-04-15T11:00:00", null); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewMortgageSaleActivities(It.IsAny(), It.Is(x => x == null)), Times.Once); } [Test] public async Task GetNewMortgageSaleActivities_No_Date_Ok() { var results = await _activityService.GetNewMortgageSaleActivities(null, 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewMortgageSaleActivities(It.Is(x => x.HasValue == false), It.IsAny()), Times.Once); } [Test] public async Task GetNewMortgageSaleActivities_No_Params_Exception() { Assert.ThrowsAsync(async () => await _activityService.GetNewMortgageSaleActivities(null, null)); } [Test] public async Task GetNewMortgageSaleActivities_FailedToParse_BadDateTime() { Assert.ThrowsAsync(async () => await _activityService.GetNewMortgageSaleActivities("DateTimes are a Devs Best Friend", 1)); Assert.ThrowsAsync(async () => await _activityService.GetNewMortgageSaleActivities("DateTimes are a Devs Best Friend", null)); } [Test] public async Task GetNewMortgageSaleActivities_Exception() { _mockActivityDao.Setup(x => x.GetNewMortgageSaleActivities(It.IsAny(), It.IsAny())).Throws(new Exception("Oops")); Assert.ThrowsAsync(async () => await _activityService.GetNewMortgageSaleActivities("2020-04-15T11:00:00", 10)); } [Test] public async Task GetNewMortgageSaleActivities_Both_Ok() { var results = await _activityService.GetNewMortgageSaleActivities("2020-04-15T11:00:00", 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewMortgageSaleActivities( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5))); _mockActivityDao.Verify(x => x.GetNewMortgageSaleActivities(It.IsAny(), It.IsAny()), Times.Once); } [Test] public async Task GetNewVehicleSaleActivities_Ok() { var results = await _activityService.GetNewVehicleSaleActivities("2020-04-15T11:00:00", 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewVehicleSaleActivities( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5))); _mockActivityDao.Verify(x => x.GetNewVehicleSaleActivities(It.IsAny(), It.IsAny()), Times.Once); } [Test] public async Task GetNewVehicleSaleActivities_No_ActvNbr_Ok() { var results = await _activityService.GetNewVehicleSaleActivities("2020-04-15T11:00:00", null); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewVehicleSaleActivities(It.IsAny(), It.Is(x => x == null)), Times.Once); } [Test] public async Task GetNewVehicleSaleActivities_No_Date_Ok() { var results = await _activityService.GetNewVehicleSaleActivities(null, 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewVehicleSaleActivities(It.Is(x => x.HasValue == false), It.IsAny()), Times.Once); } [Test] public async Task GetNewVehicleSaleActivities_No_Params_Exception() { Assert.ThrowsAsync(async () => await _activityService.GetNewVehicleSaleActivities(null, null)); } [Test] public async Task GetNewVehicleSaleActivities_FailedToParse_BadDateTime() { Assert.ThrowsAsync(async () => await _activityService.GetNewVehicleSaleActivities("DateTimes are a Devs Best Friend", 1)); Assert.ThrowsAsync(async () => await _activityService.GetNewVehicleSaleActivities("DateTimes are a Devs Best Friend", null)); } [Test] public async Task GetNewVehicleSaleActivities_Exception() { _mockActivityDao.Setup(x => x.GetNewVehicleSaleActivities(It.IsAny(), It.IsAny())).Throws(new Exception("Oops")); Assert.ThrowsAsync(async () => await _activityService.GetNewVehicleSaleActivities("2020-04-15T11:00:00", 10)); } [Test] public async Task GetNewVehicleSaleActivities_Both_Ok() { var results = await _activityService.GetNewVehicleSaleActivities("2020-04-15T11:00:00", 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewVehicleSaleActivities( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5))); _mockActivityDao.Verify(x => x.GetNewVehicleSaleActivities(It.IsAny(), It.IsAny()), Times.Once); } [Test] public async Task GetNewDebtProtectedLoanSaleActivities_Ok() { var results = await _activityService.GetNewDebtProtectedLoanSaleActivities("2020-04-15T11:00:00", 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewDebtProtectedLoanSaleActivities( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5))); _mockActivityDao.Verify(x => x.GetNewDebtProtectedLoanSaleActivities(It.IsAny(), It.IsAny()), Times.Once); } [Test] public async Task GetNewDebtProtectedLoanSaleActivities_No_ActvNbr_Ok() { var results = await _activityService.GetNewDebtProtectedLoanSaleActivities("2020-04-15T11:00:00", null); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewDebtProtectedLoanSaleActivities(It.IsAny(), It.Is(x => x == null)), Times.Once); } [Test] public async Task GetNewDebtProtectedLoanSaleActivities_No_Date_Ok() { var results = await _activityService.GetNewDebtProtectedLoanSaleActivities(null, 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewDebtProtectedLoanSaleActivities(It.Is(x => x.HasValue == false), It.IsAny()), Times.Once); } [Test] public async Task GetNewDebtProtectedLoanSaleActivities_No_Params_Exception() { Assert.ThrowsAsync(async () => await _activityService.GetNewDebtProtectedLoanSaleActivities(null, null)); } [Test] public async Task GetNewDebtProtectedLoanSaleActivities_FailedToParse_BadDateTime() { Assert.ThrowsAsync(async () => await _activityService.GetNewDebtProtectedLoanSaleActivities("DateTimes are a Devs Best Friend", 1)); Assert.ThrowsAsync(async () => await _activityService.GetNewDebtProtectedLoanSaleActivities("DateTimes are a Devs Best Friend", null)); } [Test] public async Task GetNewDebtProtectedLoanSaleActivities_Exception() { _mockActivityDao.Setup(x => x.GetNewDebtProtectedLoanSaleActivities(It.IsAny(), It.IsAny())).Throws(new Exception("Oops")); Assert.ThrowsAsync(async () => await _activityService.GetNewDebtProtectedLoanSaleActivities("2020-04-15T11:00:00", 10)); } [Test] public async Task GetNewDebtProtectedLoanSaleActivities_Both_Ok() { var results = await _activityService.GetNewDebtProtectedLoanSaleActivities("2020-04-15T11:00:00", 5); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityNbr == 1)); Assert.True(results.Any(x => x.ActivityNbr == 2)); Assert.True(results.Any(x => x.ActivityNbr == 3)); _mockActivityDao.Verify(x => x.GetNewDebtProtectedLoanSaleActivities( It.Is(dt => dt.CompareTo(DateTime.Parse("2020-04-15T11:00:00")) == 0), It.Is(actvnbr => actvnbr == 5))); _mockActivityDao.Verify(x => x.GetNewDebtProtectedLoanSaleActivities(It.IsAny(), It.IsAny()), Times.Once); } [Test] public async Task QueryActivityManagerActivity_Ok() { var results = await _activityService.QueryActivityManagerActivity(new ActivityQueryRequest() { ActivityIds = new List() { 1, 2, 3 } }); Assert.NotNull(results); Assert.AreEqual(3, results.Count); Assert.True(results.Any(x => x.ActivityId == 1)); Assert.True(results.Any(x => x.ActivityId == 2)); Assert.True(results.Any(x => x.ActivityId == 3)); _mockActivityDao.Verify(x => x.QueryActivityManagerActivity(It.IsAny())); } [Test] public async Task QueryActivityManagerActivity_Exception() { _mockActivityDao.Setup(x => x.QueryActivityManagerActivity(It.IsAny())).ThrowsAsync(new Exception("Oops")); Assert.ThrowsAsync(async () => await _activityService.QueryActivityManagerActivity(new ActivityQueryRequest() { ActivityIds = new List() { 1, 2, 3, 4, 5, 6, 7 } })); _mockActivityDao.Verify(x => x.QueryActivityManagerActivity(It.IsAny())); } [Test] public async Task QueryActivityManagerActivity_DontHitCoreWhenEmpty() { _mockActivityDao.Setup(x => x.QueryActivityManagerActivity(It.IsAny())).ThrowsAsync(new Exception("Oops")); var result = await _activityService.QueryActivityManagerActivity(new ActivityQueryRequest() { ActivityIds = new List() }); Assert.NotNull(result); _mockActivityDao.Verify(x => x.QueryActivityManagerActivity(It.IsAny()), Times.Never()); } [Test] public async Task GetPersonActivityByPhoneNumber_OK() { var phoneNumber = Guid.NewGuid().ToString(); _mockActivityDao .Setup(x => x.GetPersonActivityByPhoneNumber(It.IsAny())) .ReturnsAsync(new List { new () { PersonNumber = DateTime.Now.Millisecond, HomePhone = phoneNumber } }).Verifiable(); var result = await _activityService.GetPersonActivityByPhoneNumber(phoneNumber); Assert.NotNull(result); Assert.IsTrue(result.Success); Assert.AreEqual(phoneNumber, result.PersonRecentActivity?.HomePhone); _mockActivityDao.Verify(x => x.GetPersonActivityByPhoneNumber(It.IsAny()), Times.Once); } [Test] public async Task GetPersonActivityByPhoneNumber_MultipleReturn() { var phoneNumber = Guid.NewGuid().ToString(); _mockActivityDao .Setup(x => x.GetPersonActivityByPhoneNumber(It.IsAny())) .ReturnsAsync(new List { new () { PersonNumber = DateTime.Now.Millisecond, HomePhone = phoneNumber }, new () { PersonNumber = DateTime.Now.Millisecond, HomePhone = phoneNumber } }).Verifiable(); var result = await _activityService.GetPersonActivityByPhoneNumber(phoneNumber); Assert.NotNull(result); Assert.IsFalse(result.Success); Assert.IsNotNull(result.Message); Assert.IsNull(result.PersonRecentActivity); _mockActivityDao.Verify(x => x.GetPersonActivityByPersonNumber(It.IsAny()), Times.Never); } [Test] public async Task GetPersonActivityByPhoneNumber_NoContent() { var phoneNumber = Guid.NewGuid().ToString(); _mockActivityDao .Setup(x => x.GetPersonActivityByPhoneNumber(It.IsAny())) .ReturnsAsync(new List()).Verifiable(); var result = await _activityService.GetPersonActivityByPhoneNumber(phoneNumber); Assert.NotNull(result); Assert.IsFalse(result.Success); Assert.IsNotNull(result.Message); Assert.IsNull(result.PersonRecentActivity); _mockActivityDao.Verify(x => x.GetPersonActivityByPersonNumber(It.IsAny()), Times.Never); } [Test] public void GetPersonActivityByPhoneNumber_Exception() { _mockActivityDao .Setup(x => x.GetPersonActivityByPhoneNumber(It.IsAny())) .ThrowsAsync(new Exception()); Assert.ThrowsAsync(async () => await _activityService.GetPersonActivityByPhoneNumber(It.IsAny())); } [Test] public async Task GetPersonActivityByTaxId_OK() { var personNumber = DateTime.Now.Millisecond; var taxId = Guid.NewGuid().ToString(); var persons = new List { new() { PersonNumber = personNumber } }; _mockTaxService.Setup(x => x.GetPersonsTaxIdData(It.IsAny())) .ReturnsAsync(persons).Verifiable(); _mockActivityDao .Setup(x => x.GetPersonActivityByPersonNumber(It.IsAny())) .ReturnsAsync(new PersonRecentActivity { PersonNumber = personNumber }).Verifiable(); var result = await _activityService.GetPersonActivityByTaxId(taxId); Assert.NotNull(result); Assert.IsTrue(result.Success); Assert.NotNull(result.PersonRecentActivity); Assert.AreEqual(personNumber, result.PersonRecentActivity?.PersonNumber); _mockActivityDao.Verify(x => x.GetPersonActivityByPersonNumber(It.IsAny()), Times.Once); _mockTaxService.Verify(x => x.GetPersonsTaxIdData(It.IsAny()), Times.Once); } [Test] public async Task GetPersonActivityByTaxId_MultipleReturn() { var personNumber = DateTime.Now.Millisecond; var taxId = Guid.NewGuid().ToString(); var persons = new List { new() { PersonNumber = personNumber }, new() { PersonNumber = personNumber } }; _mockTaxService.Setup(x => x.GetPersonsTaxIdData(It.IsAny())) .ReturnsAsync(persons).Verifiable(); _mockActivityDao .Setup(x => x.GetPersonActivityByPersonNumber(It.IsAny())) .ReturnsAsync(new PersonRecentActivity { PersonNumber = personNumber }).Verifiable(); var result = await _activityService.GetPersonActivityByTaxId(taxId); Assert.NotNull(result); Assert.IsFalse(result.Success); Assert.IsNotNull(result.Message); Assert.IsNull(result.PersonRecentActivity); _mockTaxService.Verify(x => x.GetPersonsTaxIdData(It.IsAny()), Times.Once); _mockActivityDao.Verify(x => x.GetPersonActivityByPersonNumber(It.IsAny()), Times.Never); } [Test] public async Task GetPersonActivityByTaxId_NoContent() { var personNumber = DateTime.Now.Millisecond; var taxId = Guid.NewGuid().ToString(); var persons = new List(); _mockTaxService.Setup(x => x.GetPersonsTaxIdData(It.IsAny())) .ReturnsAsync(persons).Verifiable(); _mockActivityDao .Setup(x => x.GetPersonActivityByPersonNumber(It.IsAny())) .ReturnsAsync(new PersonRecentActivity { PersonNumber = personNumber }).Verifiable(); var result = await _activityService.GetPersonActivityByTaxId(taxId); Assert.NotNull(result); Assert.IsFalse(result.Success); Assert.IsNotNull(result.Message); Assert.IsNull(result.PersonRecentActivity); _mockTaxService.Verify(x => x.GetPersonsTaxIdData(It.IsAny()), Times.Once); _mockActivityDao.Verify(x => x.GetPersonActivityByPersonNumber(It.IsAny()), Times.Never); } [Test] public void GetPersonActivityByTaxId_Exception() { _mockTaxService .Setup(x => x.GetPersonsTaxIdData(It.IsAny())) .ThrowsAsync(new Exception()); Assert.ThrowsAsync(async () => await _activityService.GetPersonActivityByTaxId(It.IsAny())); } } }