using BusinessLogic.Entities; using BusinessLogic.ImportProcessing; using BusinessLogic.Interfaces.Repositories; using BusinessLogic.Interfaces.Security; using MessagePack; using Moq; using System; using System.Collections.Generic; using System.Linq; using Strategy = BusinessLogic.ImportProcessing.AccountHolderImportProcessingStrategy; namespace BusinessLogic.UnitTests.ImportProcessing.AccountHolder.ImportProcessingStrategy { public class TestBase { protected readonly Mock MockAccountHolderRepository = new Mock(); protected readonly Mock MockSecurityContext = new Mock(); protected Strategy Strategy; protected void SetupDependencies() { MockAccountHolderRepository.Setup(x => x.BulkSelectNotExisting(It.IsAny>())) .Returns(AccountHoldersToInsert()); MockAccountHolderRepository.Setup(x => x.BulkInsert(It.IsAny>())); MockAccountHolderRepository.Setup(x => x.BulkUpdate(It.IsAny>(), It.IsAny>())); } protected void SetupDependenciesForFailure(string errorMessage) { SetupDependencies(); MockAccountHolderRepository.Setup(x => x.BulkInsert(It.IsAny>())) .Throws(new NotImplementedException(errorMessage)); } protected void SetupStrategy() { Strategy = new Strategy( MockAccountHolderRepository.Object, MockSecurityContext.Object); } protected ImportProcessingStrategyArgs GetArgs() { var rows = AccountHoldersToInsert().Concat(AccountHoldersToUpdate()); return new ImportProcessingStrategyArgs() { Import = new Import() { Id = 1, CreatedByUserId = 1, CreatedDate = DateTime.Now, ImportTypeId = 1, Notes = "Notes", NumberOfRows = 1 }, ImportRows = AccountHoldersToInsert().Concat(AccountHoldersToUpdate()) .Select(x => new ImportRow() { Id = 1, ImportId = 1, Data = Convert.ToBase64String(MessagePackSerializer.Serialize(x)) }).ToList() }; } private IEnumerable AccountHoldersToInsert() { return new List() { new Entities.AccountHolder() { AccountReference = "1234" }, new Entities.AccountHolder() { AccountReference = "2345" } }; } private IEnumerable AccountHoldersToUpdate() { return new List() { new Entities.AccountHolder() { AccountReference = "9876" }, new Entities.AccountHolder() { AccountReference = "8765" } }; } } }