コード例 #1
0
        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);
        }
コード例 #2
0
        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
            });
        }
コード例 #3
0
        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();
        }