private void ValidateHeartRateTimeSeriesData(HeartActivitiesTimeSeries activities) { var act = activities.HeartActivities; act.Count().Should().Be(7); var firstAct = act[0]; firstAct.DateTime.Should().Be(new DateTime(2017, 08, 15)); firstAct.CustomHeartRateZones.Count().Should().Be(0); //Empty Custom Heart Rate Zones firstAct.HeartRateZones.Count().Should().Be(4); //Heart Rate Zones Count firstAct.HeartRateZones[0].CaloriesOut.Should().Be(2257.6846); //First zone firstAct.HeartRateZones[0].Max.Should().Be(92); firstAct.HeartRateZones[0].Min.Should().Be(30); firstAct.HeartRateZones[0].Minutes.Should().Be(1264); firstAct.HeartRateZones[0].Name.Should().Be("Out of Range"); firstAct.HeartRateZones[3].CaloriesOut.Should().Be(287.33136); //Last zone firstAct.HeartRateZones[3].Max.Should().Be(220); firstAct.HeartRateZones[3].Min.Should().Be(156); firstAct.HeartRateZones[3].Minutes.Should().Be(21); firstAct.HeartRateZones[3].Name.Should().Be("Peak"); firstAct.RestingHeartRate.Should().Be(51); }
public void Can_Deserialize_HeartRateTimeSeries() { //assemble string content = SampleDataHelper.GetContent("GetHeartRateTimeSeries.json"); JsonDotNetSerializer seralizer = new JsonDotNetSerializer(); //act HeartActivitiesTimeSeries stats = seralizer.GetHeartActivitiesTimeSeries(content); //assert ValidateHeartRateTimeSeriesData(stats); }
public async Task GetHeartRateTimeSeriesAsync_Success() { string content = SampleDataHelper.GetContent("GetHeartRateTimeSeries.json"); Func <HttpResponseMessage> responseMessage = new Func <HttpResponseMessage>(() => new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(content) }); Action <HttpRequestMessage, CancellationToken> verification = new Action <HttpRequestMessage, CancellationToken>((message, token) => { string uri = $"https:/" + $"/api.fitbit.com/1.1/user/-/activities/heart/date/{DateTime.Today:yyyy-MM-dd}/1d.json"; Assert.AreEqual(HttpMethod.Get, message.Method); Assert.AreEqual(uri, message.RequestUri.AbsoluteUri); }); FitbitClient fitbitClient = Helper.CreateFitbitClient(responseMessage, verification); HeartActivitiesTimeSeries response = await fitbitClient.GetHeartRateTimeSeries(DateTime.Today, DateRangePeriod.OneDay); ValidateHeartRateTimeSeriesData(response); }
internal static HeartActivitiesTimeSeries GetHeartActivitiesTimeSeries(this JsonDotNetSerializer serializer, string heartActivitiesTimeSeries) { if (string.IsNullOrWhiteSpace(heartActivitiesTimeSeries)) { throw new ArgumentNullException("heartActivitiesTimeSeries", "heartActivitiesTimeSeries can not be empty, null or whitespace."); } var activitiesHeartIntraday = JToken.Parse(heartActivitiesTimeSeries)["activities-heart"]; //var dataset = activitiesHeartIntraday["dataset"]; var result = new HeartActivitiesTimeSeries() { HeartActivities = (from item in activitiesHeartIntraday select new HeartActivities { DateTime = DateTime.Parse(item["dateTime"].ToString()), //here, maybe pass in the date so we have a full object of date and time HeartRateZones = serializer.Deserialize <List <HeartRateZone> >(item["value"]["heartRateZones"]), CustomHeartRateZones = serializer.Deserialize <List <HeartRateZone> >(item["value"]["customHeartRateZones"]) }).ToList(), }; return(result); }