Esempio n. 1
0
        public async void GenerateReport()
        {
            var greenButtonData = new GreenButtonData
            {
                MeterReadings = new[]
                {
                    new GreenButtonData.MeterReading
                    {
                        CostCents       = 0,
                        BillingInterval = new DateInterval(new LocalDate(2017, 6, 15), new LocalDate(2017, 7, 17))
                    },
                    new GreenButtonData.MeterReading
                    {
                        CostCents       = 100,
                        BillingInterval = new DateInterval(new LocalDate(2017, 7, 17), new LocalDate(2017, 8, 16))
                    }
                }
            };

            A.CallTo(() => orangeRocklandService.GreenButton.FetchGreenButtonData()).Returns(greenButtonData);
            A.CallTo(() => orangeRocklandService.BillDocuments.FetchEnergyPurchasedOrSoldKWh(A <LocalDate> ._)).Returns(200);

            var measurement = new Measurement
            {
                GeneratedKilowattHours = 3000
            };

            A.CallTo(() => powerGuideService.Measurement.Measure(A <DateInterval> ._)).Returns(measurement);

            SolarAndUtilityReport report = await reportGenerator.GenerateReport();

            report.PowerGenerated.Should().Be(3000);
            report.PowerBoughtOrSold.Should().Be(200);
            report.PowerCostCents.Should().Be(100);
            report.BillingInterval.Start.Should().Be(new LocalDate(2017, 7, 17));
            report.BillingInterval.End.Should().Be(new LocalDate(2017, 8, 16));
            report.BillingDate.Should().Be(new LocalDate(2017, 8, 16));

            A.CallTo(() => orangeRocklandService.GreenButton.FetchGreenButtonData()).MustHaveHappened();
            A.CallTo(() =>
                     powerGuideService.Measurement.Measure(new DateInterval(new LocalDate(2017, 7, 17), new LocalDate(2017, 8, 16))))
            .MustHaveHappened();
        }
        public async Task <SolarAndUtilityReport> generateReport()
        {
            LOGGER.Info("Downloading Green Button Data from Orange & Rockland");
            GreenButtonData greenButtonData = await orangeRocklandService.greenButton.fetchGreenButtonData();

            GreenButtonData.MeterReading mostRecentOrangeRocklandBill = greenButtonData.meterReadings.Last();
            LOGGER.Info("Downloading bill from Orange & Rockland");
            int energyPurchasedOrSold = await orangeRocklandService.billDocuments.fetchEnergyPurchasedOrSoldKWh(
                mostRecentOrangeRocklandBill
                .billingInterval.End);

            LOGGER.Debug("Paid ${0} to use {1} kWh of electricity between {2} and {3}",
                         mostRecentOrangeRocklandBill.costCents / 100,
                         energyPurchasedOrSold, mostRecentOrangeRocklandBill.billingInterval.Start,
                         mostRecentOrangeRocklandBill.billingInterval.End);

            SolarReport solarReport = await generateSolarReport(mostRecentOrangeRocklandBill.billingInterval);

            return(new SolarAndUtilityReport(solarReport.billingInterval, solarReport.powerGenerated,
                                             energyPurchasedOrSold, mostRecentOrangeRocklandBill.costCents));
        }