Ejemplo n.º 1
0
        public void GetTransactionList()
        {
            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 holding = mockRepository.Create <IReadOnlyHolding>();

            var stockResolver = mockRepository.Create <IStockResolver>();

            stockResolver.Setup(x => x.GetStock(stock.Id)).Returns(stock);

            var t1 = mockRepository.Create <IPortfolioTransaction>();
            var t2 = mockRepository.Create <IPortfolioTransaction>();
            var t3 = mockRepository.Create <IPortfolioTransaction>();

            var firstAction = mockRepository.Create <ICorporateAction>();

            firstAction.Setup(x => x.GetTransactionList(holding.Object, stockResolver.Object)).Returns(new IPortfolioTransaction[] { t1.Object }).Verifiable();
            var secondAction = mockRepository.Create <ICorporateAction>();

            secondAction.Setup(x => x.GetTransactionList(holding.Object, stockResolver.Object)).Returns(new IPortfolioTransaction[] { t2.Object, t3.Object }).Verifiable();
            var childActions    = new ICorporateAction[] { firstAction.Object, secondAction.Object };
            var compositeAction = new CompositeAction(Guid.NewGuid(), stock, new Date(2020, 01, 01), "Test Composite Action", childActions);

            var result = compositeAction.GetTransactionList(holding.Object, stockResolver.Object).ToList();

            result.Should().Equal(new IPortfolioTransaction[] { t1.Object, t2.Object, t3.Object });

            mockRepository.Verify();
        }