Skip to content

Commit

Permalink
Generation mix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
andyevansrazor committed Mar 9, 2024
1 parent 4dbb202 commit 12ddb0d
Show file tree
Hide file tree
Showing 3 changed files with 134 additions and 106 deletions.
12 changes: 0 additions & 12 deletions src/carbon-intensity-sdk/CarbonIntensityClient.Generation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,6 @@ public async Task<GenerationMixData> GetGenerationMix()
return data.Data;
}

/// <summary>
/// Get generation mix for the past 24 hours
/// </summary>
/// <param name="before"></param>
/// <returns></returns>
public async Task<GenerationMixData[]> GetGenerationMix24HBefore(DateTime before)
{
var data = await facade.CallApi<ApiListDataResponse<GenerationMixData>>($"generation/{before:yyyy-MM-ddTHH:mmZ}/pt24h");

return data.Data;
}

/// <summary>
/// Get generation mix between from and to datetimes
/// </summary>
Expand Down
43 changes: 43 additions & 0 deletions tests/carbon-intensity-sdk.test/WhenGettingGenerationData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
using AutoFixture;
using Shouldly;
using Xunit;

namespace CarbonIntensitySdk.Test;

public class WhenGettingGenerationData : BaseTest
{
[Fact]
public async Task ShouldGetGenerationMix()
{
var fixture = new Fixture();
var client = fixture.Create<CarbonIntensityClient>();

var generationMix = await client.GetGenerationMix();

generationMix.BiomassPercentage.HasValue.ShouldBeTrue();
generationMix.CoalPercentage.HasValue.ShouldBeTrue();
generationMix.GasPercentage.HasValue.ShouldBeTrue();
generationMix.HydroPercentage.HasValue.ShouldBeTrue();
generationMix.ImportsPercentage.HasValue.ShouldBeTrue();
generationMix.NuclearPercentage.HasValue.ShouldBeTrue();
generationMix.OtherPercentage.HasValue.ShouldBeTrue();
generationMix.SolarPercentage.HasValue.ShouldBeTrue();
generationMix.WindPercentage.HasValue.ShouldBeTrue();
}

[Fact]
public async Task ShouldGetGenerationMixBetweenDates()
{
var fixture = new Fixture();
var client = fixture.Create<CarbonIntensityClient>();

var from = DateTime.Today;
var to = from.AddHours(2);

var generationMix = await client.GetGenerationMix(from, to);
generationMix.Length.ShouldBe(5);

generationMix.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from.AddMinutes(-30));
generationMix.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to);
}
}
185 changes: 91 additions & 94 deletions tests/carbon-intensity-sdk.test/WhenGettingIntensity.cs
Original file line number Diff line number Diff line change
@@ -1,130 +1,127 @@
using Xunit;
using AutoFixture;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Shouldly;
using static System.Runtime.InteropServices.JavaScript.JSType;

namespace CarbonIntensitySdk.Test
namespace CarbonIntensitySdk.Test;

public class WhenGettingIntensity : BaseTest
{
public class WhenGettingIntensity : BaseTest
[Fact]
public async Task ShouldGetIntensityForCurrentHalfHour()
{
[Fact]
public async Task ShouldGetIntensityForCurrentHalfHour()
{
var fixture = new Fixture();
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
_ = await client.GetIntensityForCurrentHalfHour();
}
var client = fixture.Create<CarbonIntensityClient>();
_ = await client.GetIntensityForCurrentHalfHour();
}

[Fact]
public async Task ShouldGetIntensitiesForToday()
{
var fixture = new Fixture();
[Fact]
public async Task ShouldGetIntensitiesForToday()
{
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
var intensities = await client.GetIntensitiesForToday();
var client = fixture.Create<CarbonIntensityClient>();
var intensities = await client.GetIntensitiesForToday();

intensities.Length.ShouldBe(48);
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(DateTime.Today);
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(DateTime.Today.AddDays(1));
}
intensities.Length.ShouldBe(48);
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(DateTime.Today);
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(DateTime.Today.AddDays(1));
}

[Fact]
public async Task ShouldGetIntensitiesForDate()
{
var fixture = new Fixture();
[Fact]
public async Task ShouldGetIntensitiesForDate()
{
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
var client = fixture.Create<CarbonIntensityClient>();

var date = DateTime.Today.AddDays(-1);
var intensities = await client.GetIntensitiesForDate(date);
var date = DateTime.Today.AddDays(-1);
var intensities = await client.GetIntensitiesForDate(date);

intensities.Length.ShouldBe(48);
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(date);
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(date.AddDays(1));
}
intensities.Length.ShouldBe(48);
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(date);
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(date.AddDays(1));
}

[Fact]
public async Task ShouldGetIntensityForDateAndPeriod()
{
var fixture = new Fixture();
[Fact]
public async Task ShouldGetIntensityForDateAndPeriod()
{
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
var client = fixture.Create<CarbonIntensityClient>();

var date = DateTime.Today.AddDays(-1);
int period = 5;
var intensity = await client.GetIntensityForDateAndPeriod(date, period);
var date = DateTime.Today.AddDays(-1);
int period = 5;
var intensity = await client.GetIntensityForDateAndPeriod(date, period);

intensity.FromUtc.ShouldBe(date.AddMinutes(30 * (period - 1)));
intensity.ToUtc.ShouldBe(date.AddMinutes(30 * period));
}
intensity.FromUtc.ShouldBe(date.AddMinutes(30 * (period - 1)));
intensity.ToUtc.ShouldBe(date.AddMinutes(30 * period));
}

[Fact]
public async Task ShouldGetCarbonFactors()
{
var fixture = new Fixture();
[Fact]
public async Task ShouldGetCarbonFactors()
{
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
var client = fixture.Create<CarbonIntensityClient>();

_ = await client.GetCarbonFactors();
}
_ = await client.GetCarbonFactors();
}

[Fact]
public async Task ShouldGetIntensityFrom()
{
var fixture = new Fixture();
[Fact]
public async Task ShouldGetIntensityFrom()
{
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
var client = fixture.Create<CarbonIntensityClient>();

_ = await client.GetIntensityFrom(DateTime.Today);
}
_ = await client.GetIntensityFrom(DateTime.Today);
}

[Fact]
public async Task ShouldGetIntensityBetween()
{
var fixture = new Fixture();
[Fact]
public async Task ShouldGetIntensityBetween()
{
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
var client = fixture.Create<CarbonIntensityClient>();

var from = DateTime.Today;
var to = from.AddHours(1);
var intensities = await client.GetIntensityBetween(from, to);
intensities.Length.ShouldBe(3);
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from.AddMinutes(-30));
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to);
}
var from = DateTime.Today;
var to = from.AddHours(1);
var intensities = await client.GetIntensityBetween(from, to);

intensities.Length.ShouldBe(3);
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from.AddMinutes(-30));
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to);
}

[Fact]
public async Task ShouldGetIntensityStatsBetween()
{
var fixture = new Fixture();
[Fact]
public async Task ShouldGetIntensityStatsBetween()
{
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
var client = fixture.Create<CarbonIntensityClient>();

var from = DateTime.Today;
var to = from.AddHours(1);
var intensities = await client.GetIntensityStatsBetween(from, to);
var from = DateTime.Today;
var to = from.AddHours(1);
var intensities = await client.GetIntensityStatsBetween(from, to);

intensities.FromUtc.ShouldBe(from);
intensities.ToUtc.ShouldBe(to);
}
intensities.FromUtc.ShouldBe(from);
intensities.ToUtc.ShouldBe(to);
}

[Fact]
public async Task ShouldGetBlockAverageIntensityStatsBetween()
{
var fixture = new Fixture();
[Fact]
public async Task ShouldGetBlockAverageIntensityStatsBetween()
{
var fixture = new Fixture();

var client = fixture.Create<CarbonIntensityClient>();
var client = fixture.Create<CarbonIntensityClient>();

var from = DateTime.Today;
var to = from.AddDays(1);
var intensities = await client.GetBlockAverageIntensityStats(from, to, 2);
var from = DateTime.Today;
var to = from.AddDays(1);
var intensities = await client.GetBlockAverageIntensityStats(from, to, 2);

intensities.Length.ShouldBe(12);
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from);
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to);
}
intensities.Length.ShouldBe(12);
intensities.MinBy(x => x.FromUtc)!.FromUtc.ShouldBe(from);
intensities.MaxBy(x => x.ToUtc)!.ToUtc.ShouldBe(to);
}
}
}

0 comments on commit 12ddb0d

Please sign in to comment.