public void Execute_RequestsRoundedToIntegers_ResponseIsCorrect(RequestRoot request, List <int> roundedPercentages, ResponseRoot expectedResult) { var percentageCalculator = Substitute.For <IPercentageRounder>(); percentageCalculator.Execute(Arg.Any <ICollection <decimal> >()).Returns(roundedPercentages); var requestHandler = new RequestHandler(percentageCalculator); var result = requestHandler.Execute(request); result.Should().BeEquivalentTo(expectedResult); }
public void Execute_RequestHasZeroDataItems_ReturnsEmptyResponse() { var percentageCalculator = Substitute.For <IPercentageRounder>(); var requestHandler = new RequestHandler(percentageCalculator); var request = new RequestRoot(); var expectedResult = new ResponseRoot(); var response = requestHandler.Execute(request); response.Should().BeEquivalentTo(expectedResult); }
public void Execute_Response_Percentages_Add_Up_To_100(List <RequestData> dataList) { var percentageRounder = new PercentageRounder(); var requestHandler = new RequestHandler(percentageRounder); var request = new RequestRoot { Decimals = 0, Data = dataList }; var result = requestHandler.Execute(request); result.Data.Sum(x => x.Percentage).Should().Be(100); }
public void Execute_All_Percentage_Values_Are_Positive(List <RequestData> dataList) { var percentageRounder = new PercentageRounder(); var requestHandler = new RequestHandler(percentageRounder); var request = new RequestRoot { Decimals = 0, Data = dataList }; var result = requestHandler.Execute(request); var allPercentagesArePositive = result.Data.All(x => x.Percentage > 0); allPercentagesArePositive.Should().BeTrue(); }
public void Execute_Largest_Value_Has_The_Largest_Percentage(List <RequestData> dataList) { var percentageRounder = new PercentageRounder(); var requestHandler = new RequestHandler(percentageRounder); var request = new RequestRoot { Decimals = 0, Data = dataList }; var result = requestHandler.Execute(request); var dataWithLargestValue = result.Data.OrderByDescending(x => x.Value).First(); var dataWithLargestPercentage = result.Data.OrderByDescending(x => x.Percentage).First(); dataWithLargestValue.Should().Be(dataWithLargestPercentage); }