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); }
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(); }
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); }
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(); }
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(); }
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 }); }
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(); }
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(); }
private CorporateAction CorporateActionFromEvent(SplitConsolidationAddedEvent @event) { var splitConsolidation = new SplitConsolidation(@event.ActionId, Stock, @event.ActionDate, @event.Description, @event.OriginalUnits, @event.NewUnits); return(splitConsolidation); }