コード例 #1
0
        public void DeserializeSplitConsolidation()
        {
            var serializer = new RestClientSerializer();

            var actionId = Guid.NewGuid();
            var stockId  = Guid.NewGuid();

            var json = "{\"id\":\"" + actionId + "\","
                       + "\"stock\":\"" + stockId + "\","
                       + "\"type\":\"splitConsolidation\","
                       + "\"actionDate\":\"2000-01-10\","
                       + "\"description\":\"description\","
                       + "\"originalUnits\":1,"
                       + "\"newUnits\":2}";

            var transaction = serializer.Deserialize <CorporateAction>(json);

            var expected = new SplitConsolidation()
            {
                Id            = actionId,
                Stock         = stockId,
                ActionDate    = new Date(2000, 01, 10),
                Description   = "description",
                OriginalUnits = 1,
                NewUnits      = 2
            };

            transaction.Should().BeEquivalentTo(expected);
        }
コード例 #2
0
        public void HasBeenApplied()
        {
            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 splitConsolidation = new SplitConsolidation(Guid.NewGuid(), stock, new Date(2020, 01, 01), "Test SplitConsolidation", 1, 2);

            var transaction = new UnitCountAdjustment()
            {
                Id            = Guid.NewGuid(),
                Date          = new Date(2020, 02, 01),
                Stock         = stock,
                Comment       = "Test Unit Count Adjustment",
                OriginalUnits = 1,
                NewUnits      = 2
            };
            var transactions = mockRepository.Create <IPortfolioTransactionList>();

            transactions.Setup(x => x.ForHolding(stock.Id, splitConsolidation.Date)).Returns(new IPortfolioTransaction[] { transaction });

            var result = splitConsolidation.HasBeenApplied(transactions.Object);

            result.Should().BeTrue();

            mockRepository.Verify();
        }
コード例 #3
0
        public void SerializeSplitConsolidation()
        {
            var serializer = new RestClientSerializer();

            var actionId = Guid.NewGuid();
            var stockId  = Guid.NewGuid();
            var action   = new SplitConsolidation()
            {
                Id            = actionId,
                Stock         = stockId,
                ActionDate    = new Date(2000, 01, 10),
                Description   = "description",
                OriginalUnits = 1,
                NewUnits      = 2
            };

            var json = JToken.Parse(serializer.Serialize(action));

            var expectedJson = JToken.Parse("{\"id\":\"" + actionId + "\","
                                            + "\"stock\":\"" + stockId + "\","
                                            + "\"type\":\"splitConsolidation\","
                                            + "\"actionDate\":\"2000-01-10\","
                                            + "\"description\":\"description\","
                                            + "\"originalUnits\":1,"
                                            + "\"newUnits\":2}");

            json.Should().BeEquivalentTo(expectedJson);
        }
コード例 #4
0
        public void HasBeenAppliedNoTransactionsAtRecordDate()
        {
            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 splitConsolidation = new SplitConsolidation(Guid.NewGuid(), stock, new Date(2020, 01, 01), "Test SplitConsolidation", 1, 2);

            var transactions = mockRepository.Create <IPortfolioTransactionList>();

            transactions.Setup(x => x.ForHolding(stock.Id, splitConsolidation.Date)).Returns(new IPortfolioTransaction[] { });

            var result = splitConsolidation.HasBeenApplied(transactions.Object);

            result.Should().BeFalse();

            mockRepository.Verify();
        }
コード例 #5
0
        public void StockConsolidation()
        {
            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);
            stock.ChangeDividendRules(new Date(1974, 01, 01), 0.30m, RoundingRule.Round, false, DrpMethod.Round);

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

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

            var splitConsolidation = new SplitConsolidation(Guid.NewGuid(), stock, new Date(2020, 01, 01), "Test SplitConsolidation", 2, 1);

            var holding = mockRepository.Create <IReadOnlyHolding>();

            holding.Setup(x => x.Properties[splitConsolidation.Date]).Returns(new HoldingProperties(100, 1000.00m, 1000.00m));
            holding.Setup(x => x.Settings).Returns(new HoldingSettings(false));

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

            result.Should().SatisfyRespectively(
                first =>
            {
                first.Should().BeOfType <UnitCountAdjustment>();

                if (first is UnitCountAdjustment unitCountAdjustment)
                {
                    unitCountAdjustment.Date.Should().Be(splitConsolidation.Date);
                    unitCountAdjustment.Stock.Should().Be(splitConsolidation.Stock);
                    unitCountAdjustment.Comment.Should().Be("Test SplitConsolidation");
                    unitCountAdjustment.NewUnits.Should().Be(1);
                    unitCountAdjustment.OriginalUnits.Should().Be(2);
                }
            }
                );

            mockRepository.Verify();
        }
コード例 #6
0
        public void SplitConsolidationToResponse()
        {
            var mockRepository = new MockRepository(MockBehavior.Strict);

            var stock = mockRepository.Create <IReadOnlyStock>();

            stock.SetupGet(x => x.Id).Returns(Guid.NewGuid());

            var split = new SplitConsolidation(Guid.NewGuid(), stock.Object, new Date(2001, 01, 01), "Test", 1, 2);

            var response = split.ToResponse();

            response.Should().BeEquivalentTo(new
            {
                Id            = split.Id,
                Type          = RestApi.CorporateActions.CorporateActionType.SplitConsolidation,
                Stock         = split.Stock.Id,
                ActionDate    = split.Date,
                Description   = split.Description,
                OriginalUnits = 1,
                NewUnits      = 2
            });
        }
コード例 #7
0
        public void HasBeenAppliedNoSplitAtRecordDate()
        {
            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 splitConsolidation = new SplitConsolidation(Guid.NewGuid(), stock, new Date(2020, 01, 01), "Test SplitConsolidation", 1, 2);

            var transaction = new IncomeReceived()
            {
                Id                    = Guid.NewGuid(),
                Date                  = new Date(2020, 02, 01),
                Stock                 = stock,
                Comment               = "Test Dividend",
                RecordDate            = new Date(2020, 01, 01),
                FrankedAmount         = 10.00m,
                UnfrankedAmount       = 20.00m,
                FrankingCredits       = 30.00m,
                Interest              = 40.00m,
                TaxDeferred           = 0.00m,
                CreateCashTransaction = false,
                DrpCashBalance        = 0.00m
            };

            var transactions = mockRepository.Create <IPortfolioTransactionList>();

            transactions.Setup(x => x.ForHolding(stock.Id, splitConsolidation.Date)).Returns(new IPortfolioTransaction[] { transaction });

            var result = splitConsolidation.HasBeenApplied(transactions.Object);

            result.Should().BeFalse();

            mockRepository.Verify();
        }
コード例 #8
0
        public void NoParcelsAtRecordDate()
        {
            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 splitConsolidation = new SplitConsolidation(Guid.NewGuid(), stock, new Date(2020, 01, 01), "Test SplitConsolidation", 1, 2);

            var holding = mockRepository.Create <IReadOnlyHolding>();

            holding.Setup(x => x.Properties[splitConsolidation.Date]).Returns(new HoldingProperties(0, 0.00m, 0.00m));

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

            result.Should().BeEmpty();

            mockRepository.Verify();
        }
コード例 #9
0
        private CorporateAction CorporateActionFromEvent(SplitConsolidationAddedEvent @event)
        {
            var splitConsolidation = new SplitConsolidation(@event.ActionId, Stock, @event.ActionDate, @event.Description, @event.OriginalUnits, @event.NewUnits);

            return(splitConsolidation);
        }