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)); }