コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }