public void ApplyCostBaseAdjustment() { var mockRepository = new MockRepository(MockBehavior.Strict); var portfolio = PortfolioTestCreator.CreateDefaultPortfolio(); var events = new List <Event>(); var repository = mockRepository.Create <IRepository <Portfolio> >(); repository.Setup(x => x.Update(It.IsAny <Portfolio>())).Callback <Portfolio>(x => events.AddRange(x.FetchEvents())); var service = new PortfolioTransactionService(portfolio, repository.Object); var transaction = new CostBaseAdjustment() { Id = Guid.NewGuid(), Stock = PortfolioTestCreator.Stock_ARG.Id, TransactionDate = new Date(2007, 01, 01), Comment = "", Percentage = 0.50m }; var result = service.ApplyTransaction(transaction); result.Should().HaveOkStatus(); events.Should().BeEquivalentTo(new[] { new CostBaseAdjustmentOccurredEvent(portfolio.Id, 1, transaction.Id, new Date(2007, 01, 01), PortfolioTestCreator.Stock_ARG.Id, "") { Percentage = 0.50m } }); mockRepository.Verify(); }
public void ApplyIncomeReceived() { var mockRepository = new MockRepository(MockBehavior.Strict); var portfolio = PortfolioTestCreator.CreateDefaultPortfolio(); var events = new List <Event>(); var repository = mockRepository.Create <IRepository <Portfolio> >(); repository.Setup(x => x.Update(It.IsAny <Portfolio>())).Callback <Portfolio>(x => events.AddRange(x.FetchEvents())); var service = new PortfolioTransactionService(portfolio, repository.Object); var transaction = new IncomeReceived() { Id = Guid.NewGuid(), Stock = PortfolioTestCreator.Stock_ARG.Id, TransactionDate = new Date(2007, 01, 01), Comment = "", RecordDate = new Date(2006, 12, 27), FrankedAmount = 1.00m, UnfrankedAmount = 2.00m, FrankingCredits = 3.00m, Interest = 4.00m, TaxDeferred = 5.00m, CreateCashTransaction = true, DrpCashBalance = 2.50m }; var result = service.ApplyTransaction(transaction); result.Should().HaveOkStatus(); events.Should().BeEquivalentTo(new[] { new IncomeOccurredEvent(portfolio.Id, 1, transaction.Id, new Date(2007, 01, 01), PortfolioTestCreator.Stock_ARG.Id, "") { RecordDate = new Date(2006, 12, 27), FrankedAmount = 1.00m, UnfrankedAmount = 2.00m, FrankingCredits = 3.00m, Interest = 4.00m, TaxDeferred = 5.00m, CreateCashTransaction = true, DrpCashBalance = 2.50m } }); mockRepository.Verify(); }
public void ApplyDisposal() { var mockRepository = new MockRepository(MockBehavior.Strict); var portfolio = PortfolioTestCreator.CreateDefaultPortfolio(); var events = new List <Event>(); var repository = mockRepository.Create <IRepository <Portfolio> >(); repository.Setup(x => x.Update(It.IsAny <Portfolio>())).Callback <Portfolio>(x => events.AddRange(x.FetchEvents())); var service = new PortfolioTransactionService(portfolio, repository.Object); var transaction = new Disposal() { Id = Guid.NewGuid(), Stock = PortfolioTestCreator.Stock_ARG.Id, TransactionDate = new Date(2007, 01, 01), Comment = "", Units = 50, AveragePrice = 0.98m, TransactionCosts = 1.00m, CgtMethod = CgtCalculationMethod.LastInFirstOut, CreateCashTransaction = true }; var result = service.ApplyTransaction(transaction); result.Should().HaveOkStatus(); events.Should().BeEquivalentTo(new[] { new DisposalOccurredEvent(portfolio.Id, 1, transaction.Id, new Date(2007, 01, 01), PortfolioTestCreator.Stock_ARG.Id, "") { Units = 50, AveragePrice = 0.98m, TransactionCosts = 1.00m, CgtMethod = Domain.Utils.CgtCalculationMethod.LastInFirstOut, CreateCashTransaction = true } }); mockRepository.Verify(); }
public void ApplyReturnOfCapital() { var mockRepository = new MockRepository(MockBehavior.Strict); var portfolio = PortfolioTestCreator.CreateDefaultPortfolio(); var events = new List <Event>(); var repository = mockRepository.Create <IRepository <Portfolio> >(); repository.Setup(x => x.Update(It.IsAny <Portfolio>())).Callback <Portfolio>(x => events.AddRange(x.FetchEvents())); var service = new PortfolioTransactionService(portfolio, repository.Object); var transaction = new ReturnOfCapital() { Id = Guid.NewGuid(), Stock = PortfolioTestCreator.Stock_ARG.Id, TransactionDate = new Date(2007, 01, 01), Comment = "", Amount = 5.00m, RecordDate = new Date(2006, 12, 01), CreateCashTransaction = true }; var result = service.ApplyTransaction(transaction); result.Should().HaveOkStatus(); events.Should().BeEquivalentTo(new[] { new ReturnOfCapitalOccurredEvent(portfolio.Id, 1, transaction.Id, new Date(2007, 01, 01), PortfolioTestCreator.Stock_ARG.Id, "") { Amount = 5.00m, RecordDate = new Date(2006, 12, 01), CreateCashTransaction = true } }); mockRepository.Verify(); }
public void ApplyCashTransaction() { var mockRepository = new MockRepository(MockBehavior.Strict); var portfolio = PortfolioTestCreator.CreateDefaultPortfolio(); var events = new List <Event>(); var repository = mockRepository.Create <IRepository <Portfolio> >(); repository.Setup(x => x.Update(It.IsAny <Portfolio>())).Callback <Portfolio>(x => events.AddRange(x.FetchEvents())); var service = new PortfolioTransactionService(portfolio, repository.Object); var transaction = new CashTransaction() { Id = Guid.NewGuid(), Stock = Guid.Empty, TransactionDate = new Date(2007, 01, 01), Comment = "", CashTransactionType = CashTransactionType.Interest, Amount = 1.98m }; var result = service.ApplyTransaction(transaction); result.Should().HaveOkStatus(); events.Should().BeEquivalentTo(new[] { new CashTransactionOccurredEvent(portfolio.Id, 1, transaction.Id, new Date(2007, 01, 01), "") { CashTransactionType = Domain.Transactions.BankAccountTransactionType.Interest, Amount = 1.98m, } }); mockRepository.Verify(); }