コード例 #1
0
        public void FindsSingleScenarioBasedOnSelection()
        {
            var scenarioToMatchRule = MockRepository.GenerateStub <IRuleModel>();

            scenarioToMatchRule.Stub(x => x.GetRuleXml()).Return("Pick Me");
            var scenarioToMatch = new Scenario("Pick Me");

            scenarioToMatch.SetRule(scenarioToMatchRule.GetRuleXml());
            var scenarios = new List <Scenario> {
                scenarioToMatch
            };
            var query    = MockRepository.GenerateStub <IRuleTypeQuery>();
            var executor = MockRepository.GenerateStub <IScenarioRuleExecutor>();

            executor.Stub(x => x.Matches(Arg <Type> .Is.Anything, Arg <object> .Is.Anything, Arg <string> .Is.Anything)).Return(true);
            query.Stub(q => q.Get(Arg <int> .Is.Anything)).Return(new TypeDelegator(typeof(ConfiguredProduct)));
            var builder = MockRepository.GenerateStub <IProductTypeBuilder>();

            builder.Stub(b => b.Build(Arg <Type> .Is.Anything, Arg <ConfiguredProduct> .Is.Anything)).Return(new object());
            var evaluator   = new ScenarioRuleEvaluator(query, executor, builder, null);
            var testProduct = new MyMonolith.Domain.Selections.Entities.Selection()
            {
                SiteProductVersion = new SiteProductVersion(1, 1, 1)
                {
                    SiteProduct = new SiteProduct(
                        new Site(1, "Site"), new Product(1))
                }
            };
            var matching = evaluator.MatchingScenarioFrom(testProduct.GetPricingContext(), scenarios);

            matching.Should().Be(scenarioToMatch);
        }
コード例 #2
0
        public void NoScenarioMatches()
        {
            var query = MockRepository.GenerateStub <IRuleTypeQuery>();

            query.Stub(q => q.Get(Arg <int> .Is.Anything)).Return(new TypeDelegator(typeof(ConfiguredProduct)));

            var executor = MockRepository.GenerateStub <IScenarioRuleExecutor>();
            var builder  = MockRepository.GenerateStub <IProductTypeBuilder>();

            builder.Stub(b => b.Build(Arg <Type> .Is.Anything, Arg <ConfiguredProduct> .Is.Anything)).Return(new object());
            var scenariosQuery = MockRepository.GenerateStub <ISiteProductScenariosQuery>();
            var evaluator      = new ScenarioRuleEvaluator(query, executor, builder, scenariosQuery);

            var testProduct = new MyMonolith.Domain.Selections.Entities.Selection()
            {
                SiteProductVersion = new SiteProductVersion(1, 1, 1)
                {
                    SiteProduct = new SiteProduct(
                        new Site(1, "Site"), new Product(1))
                }
            };
            var matching = evaluator.MatchingScenarioFrom(testProduct.GetPricingContext(), new Scenario[] { });

            matching.Should().Be(null);
        }
コード例 #3
0
 void given_evaluator()
 {
     _evaluator = new ScenarioRuleEvaluator(_query, _executor, _builder, null, session);
 }