public void Create_MultipleThreshold_ShouldCorrectlyCreateRanges() { // Arrange var deminimisBaseCharges = new List <ChargeName> { "Item" }; var chargeConfigurations = new List <ChargeConfiguration> { new RateBasedChargeConfiguration("Duty", "EUR0", new List <ChargeName> { "Item" }), new RateBasedChargeConfiguration("Vat", "EUR100", new List <ChargeName> { "Item", "Duty" }), new RateBasedChargeConfiguration("Fee", "EUR200", new List <ChargeName> { "Item", "Duty", "Vat" }), new FixedRateChargeConfiguration("FixedFee", "EUR300", "EUR100") }; // Act var calculationRanges = new CalculatorConfiguration(chargeConfigurations, deminimisBaseCharges) .CalculationRanges .ToList(); // Assert calculationRanges.Should().HaveCount(4); calculationRanges[0].DeminimisThreshold.ToString().Should().Be("EUR0"); calculationRanges[0].ChargeConfigurations.Should().HaveCount(1); calculationRanges[1].DeminimisThreshold.ToString().Should().Be("EUR100"); calculationRanges[1].ChargeConfigurations.Should().HaveCount(2); calculationRanges[2].DeminimisThreshold.ToString().Should().Be("EUR200"); calculationRanges[2].ChargeConfigurations.Should().HaveCount(3); calculationRanges[3].DeminimisThreshold.ToString().Should().Be("EUR300"); calculationRanges[3].ChargeConfigurations.Should().HaveCount(4); }