public static StockHistoryResponse ToHistoryResponse(this Stock stock) { var stockProperties = stock.Properties.ClosestTo(Date.Today); var result = new StockHistoryResponse() { Id = stock.Id, AsxCode = stockProperties.AsxCode, Name = stockProperties.Name, ListingDate = stock.EffectivePeriod.FromDate, DelistedDate = stock.EffectivePeriod.ToDate, }; foreach (var property in stock.Properties.Values.Reverse()) { result.AddHistory(property.EffectivePeriod.FromDate, property.EffectivePeriod.ToDate, property.Properties.AsxCode, property.Properties.Name, property.Properties.Category.ToResponse()); } foreach (var rules in stock.DividendRules.Values.Reverse()) { result.AddDividendRules(rules.EffectivePeriod.FromDate, rules.EffectivePeriod.ToDate, rules.Properties.CompanyTaxRate, rules.Properties.DividendRoundingRule, rules.Properties.DrpActive, rules.Properties.DrpMethod.ToResponse()); } return(result); }
public void DeserializeStockHistoryResponse() { var serializer = new RestClientSerializer(); var id = Guid.NewGuid(); var json = "{\"id\":\"" + id + "\"," + "\"asxCode\":\"ABC\"," + "\"name\":\"ABC Pty Ltd\"," + "\"trust\":true," + "\"listingDate\":\"2000-01-01\"," + "\"delistedDate\":\"9999-12-31\"," + "\"history\":[" + "{\"fromDate\":\"2001-01-02\",\"toDate\":\"2001-01-03\",\"asxCode\":\"OLD\",\"name\":\"Old Name\",\"category\":\"australianStocks\"}" + "]," + "\"dividendRules\":[" + "{\"fromDate\":\"2001-01-02\",\"toDate\":\"2001-01-03\",\"companyTaxRate\":0.45,\"roundingRule\":\"truncate\",\"drpActive\":true,\"drpMethod\":\"roundDown\"}" + "]}"; var command = serializer.Deserialize <StockHistoryResponse>(json); var expected = new StockHistoryResponse() { Id = id, AsxCode = "ABC", Name = "ABC Pty Ltd", ListingDate = new Date(2000, 01, 01), DelistedDate = Date.MaxValue, }; expected.AddHistory(new Date(2001, 01, 02), new Date(2001, 01, 03), "OLD", "Old Name", AssetCategory.AustralianStocks); expected.AddDividendRules(new Date(2001, 01, 02), new Date(2001, 01, 03), 0.45m, RoundingRule.Truncate, true, DrpMethod.RoundDown); command.Should().BeEquivalentTo(expected); }