public void ChangeDrpParticipation() { var mockRepository = new MockRepository(MockBehavior.Strict); var stock = new Stock(Guid.NewGuid()); stock.List("ABC", "ABC Pty Ltd", new Date(1974, 01, 01), false, AssetCategory.AustralianStocks); var stockResolver = mockRepository.Create <IStockResolver>(); stockResolver.Setup(x => x.GetStock(stock.Id)).Returns(stock); var transactionHandlers = mockRepository.Create <IServiceFactory <ITransactionHandler> >(); transactionHandlers.Setup(x => x.GetService <OpeningBalance>()).Returns(new OpeningBalanceHandler()); var portfolio = new Portfolio(Guid.NewGuid(), stockResolver.Object, transactionHandlers.Object); portfolio.AddOpeningBalance(stock.Id, new Date(1999, 01, 01), new Date(1999, 01, 01), 100, 100.00m, "", Guid.Empty); portfolio.ChangeDrpParticipation(stock.Id, true); portfolio.Holdings[stock.Id].Settings.ParticipateInDrp.Should().BeTrue(); mockRepository.Verify(); }
public void AddOpeningBalanceExistingHoldings() { var mockRepository = new MockRepository(MockBehavior.Strict); var stock = new Stock(Guid.NewGuid()); stock.List("ABC", "ABC Pty Ltd", new Date(1974, 01, 01), false, AssetCategory.AustralianStocks); var stockResolver = mockRepository.Create <IStockResolver>(); stockResolver.Setup(x => x.GetStock(stock.Id)).Returns(stock); var handler = mockRepository.Create <ITransactionHandler>(); OpeningBalance transaction = null; handler.Setup(x => x.Apply(It.IsAny <IPortfolioTransaction>(), It.IsAny <IHolding>(), It.IsAny <ICashAccount>())) .Callback <IPortfolioTransaction, IHolding, ICashAccount>((t, h, c) => transaction = (OpeningBalance)t) .Verifiable(); var transactionHandlers = mockRepository.Create <IServiceFactory <ITransactionHandler> >(); transactionHandlers.Setup(x => x.GetService <OpeningBalance>()).Returns(handler.Object); var portfolio = new Portfolio(Guid.NewGuid(), stockResolver.Object, transactionHandlers.Object); var transactionId = Guid.NewGuid(); portfolio.AddOpeningBalance(stock.Id, new Date(1999, 01, 01), new Date(1998, 01, 01), 10, 100.00m, "Existing", Guid.Empty); portfolio.AddOpeningBalance(stock.Id, new Date(2000, 01, 01), new Date(1999, 01, 01), 100, 1000.00m, "Comment", transactionId); transaction.Should().BeEquivalentTo(new { Id = transaction.Id, Date = new Date(2000, 01, 01), Stock = stock, Comment = "Comment", Units = 100, CostBase = 1000.00m }); mockRepository.Verify(); }
public void IncomeReceived() { var mockRepository = new MockRepository(MockBehavior.Strict); var stock = new Stock(Guid.NewGuid()); stock.List("ABC", "ABC Pty Ltd", new Date(1974, 01, 01), false, AssetCategory.AustralianStocks); var stockResolver = mockRepository.Create <IStockResolver>(); stockResolver.Setup(x => x.GetStock(stock.Id)).Returns(stock); var handler = mockRepository.Create <ITransactionHandler>(); IncomeReceived transaction = null; handler.Setup(x => x.Apply(It.IsAny <IPortfolioTransaction>(), It.IsAny <IHolding>(), It.IsAny <ICashAccount>())) .Callback <IPortfolioTransaction, IHolding, ICashAccount>((t, h, c) => transaction = (IncomeReceived)t) .Verifiable(); var transactionHandlers = mockRepository.Create <IServiceFactory <ITransactionHandler> >(); transactionHandlers.Setup(x => x.GetService <IncomeReceived>()).Returns(handler.Object); transactionHandlers.Setup(x => x.GetService <OpeningBalance>()).Returns(new OpeningBalanceHandler()); var portfolio = new Portfolio(Guid.NewGuid(), stockResolver.Object, transactionHandlers.Object); portfolio.AddOpeningBalance(stock.Id, new Date(1999, 01, 01), new Date(1999, 01, 01), 100, 100.00m, "", Guid.Empty); var transactionId = Guid.NewGuid(); portfolio.IncomeReceived(stock.Id, new Date(2000, 01, 01), new Date(2000, 02, 01), 100.00m, 101.00m, 30.00m, 2.00m, 3.00m, 20.00m, true, "Comment", transactionId); transaction.Should().BeEquivalentTo(new { Id = transaction.Id, Date = new Date(2000, 02, 01), Stock = stock, Comment = "Comment", RecordDate = new Date(2000, 01, 01), FrankedAmount = 100.00m, UnfrankedAmount = 101.00m, FrankingCredits = 30.00m, Interest = 2.00m, TaxDeferred = 3.00m, DrpCashBalance = 20.00m, CreateCashTransaction = true }); mockRepository.Verify(); }
public void DisposeOfShares() { var mockRepository = new MockRepository(MockBehavior.Strict); var stock = new Stock(Guid.NewGuid()); stock.List("ABC", "ABC Pty Ltd", new Date(1974, 01, 01), false, AssetCategory.AustralianStocks); var stockResolver = mockRepository.Create <IStockResolver>(); stockResolver.Setup(x => x.GetStock(stock.Id)).Returns(stock); var handler = mockRepository.Create <ITransactionHandler>(); Disposal transaction = null; handler.Setup(x => x.Apply(It.IsAny <IPortfolioTransaction>(), It.IsAny <IHolding>(), It.IsAny <ICashAccount>())) .Callback <IPortfolioTransaction, IHolding, ICashAccount>((t, h, c) => transaction = (Disposal)t) .Verifiable(); var transactionHandlers = mockRepository.Create <IServiceFactory <ITransactionHandler> >(); transactionHandlers.Setup(x => x.GetService <Disposal>()).Returns(handler.Object); transactionHandlers.Setup(x => x.GetService <OpeningBalance>()).Returns(new OpeningBalanceHandler()); var portfolio = new Portfolio(Guid.NewGuid(), stockResolver.Object, transactionHandlers.Object); portfolio.AddOpeningBalance(stock.Id, new Date(1999, 01, 01), new Date(1999, 01, 01), 100, 100.00m, "", Guid.Empty); var transactionId = Guid.NewGuid(); portfolio.DisposeOfShares(stock.Id, new Date(2000, 01, 01), 100, 10.00m, 19.95m, CgtCalculationMethod.MinimizeGain, true, "Comment", transactionId); transaction.Should().BeEquivalentTo(new { Id = transaction.Id, Date = new Date(2000, 01, 01), Stock = stock, Comment = "Comment", Units = 100, AveragePrice = 10.00m, TransactionCosts = 19.95m, CreateCashTransaction = true, CgtMethod = CgtCalculationMethod.MinimizeGain }); mockRepository.Verify(); }