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); }
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); }
void given_evaluator() { _evaluator = new ScenarioRuleEvaluator(_query, _executor, _builder, null, session); }