public async void FetchMeasurements() { var response = A.Fake <HttpResponseMessage>(); A.CallTo(() => httpMessageHander.SendAsync(A <HttpRequestMessage> ._)).Returns(response); A.CallTo(() => contentHandlers.ReadContentAsJson <MeasurementsResponse>(response)) .Returns(JsonConvert.DeserializeObject <MeasurementsResponse>( File.ReadAllText("data/measurements.json"))); DateTimeZone zone = DateTimeZoneProviders.Tzdb["America/New_York"]; MeasurementsResponse actual = await client.FetchMeasurements( new Guid("80DFA10D-0E02-4993-AA9A-BD241B2DC7F9"), new ZonedDateTime(new LocalDateTime(2017, 7, 17, 0, 0, 0), zone, Offset.FromHours(-4)), new ZonedDateTime(new LocalDateTime(2017, 8, 16, 0, 0, 0), zone, Offset.FromHours(-4)) ); A.CallTo(() => httpMessageHander.SendAsync(A <HttpRequestMessage> .That.Matches(message => message.Method == HttpMethod.Get && message.RequestUri.ToString().Equals( "https://mysolarcity.com/solarcity-api/powerguide/v1.0/measurements/80DFA10D-0E02-4993-AA9A-BD241B2DC7F9?StartTime=2017-07-17T00:00:00&EndTime=2017-08-16T00:00:00&Period=Day", StringComparison.CurrentCultureIgnoreCase) ))).MustHaveHappened(); actual.TotalEnergyInIntervalkWh.Should().Be(1361.32); actual.Measurements.Count.Should().Be(31); actual.Measurements[0].Timestamp.Should().Be(new LocalDateTime(2017, 7, 17, 0, 0, 0)); actual.Measurements[0].CumulativekWh.Should().Be(5979.32); // actual.Measurements[0].EnergyInIntervalkWh.Should().Be(47.38); actual.Measurements[0].DataStatus.Should().Be(DataStatus.Validated); }
public async Task <Measurement> measure(DateInterval billingInterval) { Guid installationId = await installationService.fetchInstallationId(); MeasurementsResponse measurements = await client.measurements.fetchMeasurements(installationId, billingInterval.Start.AtStartOfDayInZone(reportTimeZone), billingInterval.End.AtStartOfDayInZone(reportTimeZone)); double cumulativeGeneratedBeforeInterval = measurements.measurements.Min(measurement => measurement.cumulativekWh); double cumulativeGeneratedAfterInterval = measurements.measurements.Max(measurement => measurement.cumulativekWh); return(new Measurement { generatedKilowattHours = cumulativeGeneratedAfterInterval - cumulativeGeneratedBeforeInterval }); }
public async void Measure() { var installationGuid = new Guid("45c0c40e-a9ad-11e7-abc4-cec278b6b50a"); A.CallTo(() => installationService.FetchInstallationId()).Returns(installationGuid); var measurementResponse = new MeasurementsResponse { Measurements = new List <Measurement> { new Measurement { CumulativekWh = 0, DataStatus = DataStatus.Validated, Timestamp = new LocalDateTime(2017, 07, 17, 0, 0) }, new Measurement { CumulativekWh = 100, DataStatus = DataStatus.Validated, Timestamp = new LocalDateTime(2017, 08, 16, 0, 0) } }, TotalEnergyInIntervalkWh = 100 }; A.CallTo(() => measurementClient.FetchMeasurements(A <Guid> ._, A <ZonedDateTime> ._, A <ZonedDateTime> ._)) .Returns(measurementResponse); var interval = new DateInterval(new LocalDate(2017, 7, 17), new LocalDate(2017, 8, 16)); Data.Measurement measurement = await measurementService.Measure(interval); measurement.GeneratedKilowattHours.Should().Be(100); A.CallTo(() => measurementClient.FetchMeasurements(A <Guid> ._, new LocalDateTime(2017, 07, 17, 0, 0).InZoneStrictly(zone), new LocalDateTime(2017, 08, 16, 0, 0).InZoneStrictly(zone))).MustHaveHappened(); }