public void ShouldWorkNormally() { // Arrange decimal fakeDailyResult = 9m; decimal fakeAggregateResult = 10m; var openFiscaLib = A.Fake <IOpenFisca>(); var dailyRequestBuilder = A.Fake <IBuildDailyRequests>(); var aggregateRequestBuilder = A.Fake <IBuildAggregateRequests>(); var dailyResultExtractor = A.Fake <IExtractDailyResults>(); var aggregateResultExtractor = A.Fake <IExtractAggregateResults>(); A.CallTo(() => dailyResultExtractor.Extract(A <OpenFiscaResource> ._)) .Returns(fakeDailyResult); A.CallTo(() => aggregateResultExtractor.Extract(A <OpenFiscaResource> ._)) .Returns(fakeAggregateResult); // Act var sut = new MotorVehicleRuleExecutor( openFiscaLib, dailyRequestBuilder, aggregateRequestBuilder, dailyResultExtractor, aggregateResultExtractor); var simulationCase = A.Fake <MotorVehicleSimulationCase>(); var person = new MotorVehiclePerson(); var result = sut.Execute(simulationCase, person); // Assert A.CallTo(() => openFiscaLib.Calculate(A <OpenFiscaResource> ._)) .MustHaveHappenedTwiceExactly(); A.CallTo(() => dailyRequestBuilder.Build(A <MotorVehicleSimulationCase> ._, A <MotorVehiclePerson> ._)) .MustHaveHappenedOnceExactly(); A.CallTo(() => aggregateRequestBuilder.Build(A <MotorVehicleSimulationCase> ._, A <MotorVehiclePerson> ._, fakeDailyResult)) .MustHaveHappenedOnceExactly(); A.CallTo(() => dailyResultExtractor.Extract(A <OpenFiscaResource> ._)) .MustHaveHappenedOnceExactly(); A.CallTo(() => aggregateResultExtractor.Extract(A <OpenFiscaResource> ._)) .MustHaveHappenedOnceExactly(); // Could just make sure calls happened Assert.Equal(fakeAggregateResult, result); }
private MotorVehicleRuleExecutor GetSystem() { var restClient = new RestClient(); var openFiscaOptions = new OpenFiscaOptions() { Url = "https://openfiscacanada-dts-csps-main.dev.dts-stn.com" }; var options = Options.Create(openFiscaOptions); var openFiscaLib = new OpenFiscaLib(restClient, options); var dailyRequestBuilder = new DailyRequestBuilder(); var dailyResultExtractor = new DailyResultExtractor(); var aggregateRequestBuilder = new AggregateRequestBuilder(); var aggregateResultExtractor = new AggregateResultExtractor(); var executor = new MotorVehicleRuleExecutor(openFiscaLib, dailyRequestBuilder, aggregateRequestBuilder, dailyResultExtractor, aggregateResultExtractor); return(executor); }