using BusinessLogic.Classes.Result; using BusinessLogic.Entities; using BusinessLogic.Enums; using BusinessLogic.Interfaces.Persistence; using BusinessLogic.Interfaces.Security; using BusinessLogic.Interfaces.Services; using BusinessLogic.Models.Suspense; using BusinessLogic.Suspense.JournalAllocation; using log4net; using Moq; using System; using System.Collections.Generic; using System.Linq; namespace BusinessLogic.UnitTests.Suspense.JournalAllocation { public class BaseTest { protected Mock MockLogger = new Mock(); protected Mock MockUnitOfWork = new Mock(); protected Mock MockSecurityContext = new Mock(); protected Mock MockTransactionJournalService = new Mock(); protected Mock MockSuspenseJournalService = new Mock(); protected Mock MockJournalAllocationStrategyValidator = new Mock(); protected void SetupUnitOfWork() { MockUnitOfWork.Setup(x => x.Mops.GetAll(It.IsAny())) .Returns(new List() { new Mop() { MopCode = "JR", Metadata = new List() { new MopMetadata() { MetadataKey = new MetadataKey() { Name = MopMetadataKeys.IsAJournalReallocation }, Value = "True" } } }, new Mop() { MopCode = "JN", Metadata = new List() { new MopMetadata() { MetadataKey = new MetadataKey() { Name = MopMetadataKeys.IsAJournal }, Value = "True" } } } }); MockUnitOfWork.Setup(x => x.Vats.GetAll(It.IsAny())) .Returns(new List() { new Vat() { VatCode = "M0", Metadata = new List() { new VatMetadata() { MetadataKey = new MetadataKey() { Name = VatMetadataKeys.IsASuspenseTransactionVatCode }, Value = "True" } } } }); MockUnitOfWork.Setup(x => x.Funds.GetAll(It.IsAny())) .Returns(new List() { new Fund() { FundCode = "01", Metadata = new List() { new FundMetadata() { MetadataKey = new MetadataKey() { Name = FundMetadataKeys.IsASuspenseTransactionFund }, Value = "True" } } } }); MockUnitOfWork.Setup(x => x.Suspenses.Lock(It.IsAny>(), It.IsAny())); MockUnitOfWork.Setup(x => x.Suspenses.Unlock(It.IsAny())); MockUnitOfWork.Setup(x => x.Suspenses.GetSuspensesBeingProcessed(It.IsAny())) .Returns(new List() { new Entities.Suspense() { Id = 1, AccountNumber = "1234", Amount = 10, CreatedAt = DateTime.Now, ImportId = 1, Narrative = "Test", ProcessId = Guid.NewGuid().ToString(), TransactionDate = DateTime.Now } }); MockTransactionJournalService.Setup(x => x.CreateJournal( It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny(), It.IsAny())) .Returns(new Result()); MockSuspenseJournalService.Setup(x => x.GetPspReference()) .Returns("PspReference"); MockSuspenseJournalService.Setup(x => x.CreateJournal( It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) .Returns(new Result()); } protected List GetSuspenseIds() { return GetSuspenseIds(1); } protected List GetSuspenseIds(int numberOfItems) { var list = new List(); for(var i = 1; i<= numberOfItems; i++) { list.Add(new Entities.Suspense() { Id = i, AccountNumber = "1234", Amount = 10, CreatedAt = DateTime.Now, ImportId = 1, Narrative = "Test", ProcessId = Guid.NewGuid().ToString(), TransactionDate = DateTime.Now }); } MockUnitOfWork.Setup(x => x.Suspenses.GetSuspensesBeingProcessed(It.IsAny())) .Returns(list); return list.Select(x => x.Id).ToList(); } protected List GetJournals() { return GetJournals(1); } protected List GetJournals(int numberOfItems) { var list = new List(); for (var i = 1; i <= numberOfItems; i++) { list.Add(new Journal() { AccountReference = "Test", Amount = 10, FundCode = "3", MopCode = "M1", Narrative = "Narrative", VatCode = "V1" }); } return list; } protected List GetCreditNotes() { return GetCreditNotes(1); } protected List GetCreditNotes(int numberOfItems) { var list = new List(); for (var i = 1; i <= numberOfItems; i++) { list.Add(new CreditNote() { AccountReference = "Test", Amount = 10, FundCode = "N1", VatCode = "V1" }); } return list; } } }