public void WhenIApplyTheRules() { MarketRulesManager manager = ScenarioContext.Current["MARKETRULEMANAGER"] as MarketRulesManager; manager.Should().NotBeNull(); Fixture fixture = ScenarioContext.Current["FIXTURE"] as Fixture; manager.ApplyRules(fixture); }
public void WhenMarketFiltersAreInitiated() { _marketsCache = null; _fixture.Markets.Clear(); _fixture.Markets.AddRange(_markets); var objectProviderMock = new Mock <IStoredObjectProvider>(); objectProviderMock.Setup(x => x.GetObject(It.IsAny <string>())).Returns(() => _marketsCache); objectProviderMock.Setup(x => x.SetObject(It.IsAny <string>(), It.IsAny <IUpdatableMarketStateCollection>())) .Callback <string, IUpdatableMarketStateCollection>((s, newState) => _marketsCache = newState); List <IMarketRule> rules = new List <IMarketRule> { InactiveMarketsFilteringRule.Instance, DeletedMarketsRule.Instance, VoidUnSettledMarket.Instance }; _marketFilters = new MarketRulesManager(_fixture.Id, objectProviderMock.Object, rules); }
public IMarketRulesManager CreateNewMarketRuleManager(string fixtureId) { if (string.IsNullOrEmpty(fixtureId)) { throw new ArgumentNullException("fixtureId", "fixtureId cannot be null or empty"); } if (_rulesManagers.ContainsKey(fixtureId)) { return(_rulesManagers[fixtureId]); } var rule_manager = new MarketRulesManager(fixtureId, this, _Rules); _rulesManagers[fixtureId] = rule_manager; return(rule_manager); }
public void GivenAMarketRuleWithTheHaveTheFollowingRules(Table table) { Fixture fixture = ScenarioContext.Current["FIXTURE"] as Fixture; fixture.Should().NotBeNull(); Mock <IStoredObjectProvider> provider = new Mock <IStoredObjectProvider>(); List <IMarketRule> rules = new List <IMarketRule>(); foreach (var row in table.Rows) { Mock <IMarketRule> rule = new Mock <IMarketRule>(); rule.Setup(x => x.Name).Returns(row["Rule"]); rules.Add(rule.Object); ScenarioContext.Current.Add("RULE-" + row["Rule"], rule); } MarketRulesManager manager = new MarketRulesManager(fixture.Id, provider.Object, rules); ScenarioContext.Current.Add("MARKETRULEMANAGER", manager); }
public void GivenTheMarketRulesReturnTheFollowingIntents(Table table) { MarketRulesManager manager = ScenarioContext.Current["MARKETRULEMANAGER"] as MarketRulesManager; manager.Should().NotBeNull(); Fixture fixture = ScenarioContext.Current["FIXTURE"] as Fixture; fixture.Should().NotBeNull(); foreach (var row in table.Rows) { var name = row["Rule"]; Mock <IMarketRule> rule = ScenarioContext.Current["RULE-" + name] as Mock <IMarketRule>; rule.Should().NotBeNull(); var mkt_name = row["Market"]; var result = row["Result"]; var mkt = fixture.Markets.FirstOrDefault(x => x.Id == mkt_name); mkt.Should().NotBeNull(); if (!ScenarioContext.Current.ContainsKey("INTENT-RULE-" + name)) { MarketRuleResultIntent rule_intent = new MarketRuleResultIntent(); ScenarioContext.Current.Add("INTENT-RULE-" + name, rule_intent); rule.Setup(x => x.Apply(It.IsAny <Fixture>(), It.IsAny <IMarketStateCollection>(), It.IsAny <IMarketStateCollection>())).Returns(rule_intent); } MarketRuleResultIntent intent = ScenarioContext.Current["INTENT-RULE-" + name] as MarketRuleResultIntent; intent.Should().NotBeNull(); switch (result) { case "E": Action <Market> action = x => x.AddOrUpdateTagValue("name", x.Name + " - E: " + name); MarketRuleEditIntent edit_intent = new MarketRuleEditIntent(action, MarketRuleEditIntent.OperationType.CHANGE_DATA); intent.EditMarket(mkt, edit_intent); break; case "!E": intent.MarkAsUnEditable(mkt); break; case "R": intent.MarkAsRemovable(mkt); break; case "!R": intent.MarkAsUnRemovable(mkt); break; case "CS": Action <Market> edit_seln_action = x => x.Selections.ForEach(y => y.Name = y.Name + name); MarketRuleEditIntent change_seln_edit_intent = new MarketRuleEditIntent(edit_seln_action, MarketRuleEditIntent.OperationType.CHANGE_SELECTIONS); intent.EditMarket(mkt, change_seln_edit_intent); break; case "CD": Action <Market> change_data_action = x => x.AddOrUpdateTagValue("name", x.Name + name); MarketRuleEditIntent change_data_edit_intent = new MarketRuleEditIntent(change_data_action, MarketRuleEditIntent.OperationType.CHANGE_DATA); intent.EditMarket(mkt, change_data_edit_intent); break; case "AS": Action <Market> add_seln_action = x => x.Selections.Add(new Selection { Name = mkt.Name + (x.Selections.Count() + 1) + name, Id = mkt.Name + x.Selections.Count() + name }); MarketRuleEditIntent add_seln_intent = new MarketRuleEditIntent(add_seln_action, MarketRuleEditIntent.OperationType.ADD_SELECTIONS); intent.EditMarket(mkt, add_seln_intent); break; case "RS": Action <Market> remove_seln_action = x => x.Selections.Clear(); MarketRuleEditIntent remove_seln_intent = new MarketRuleEditIntent(remove_seln_action, MarketRuleEditIntent.OperationType.REMOVE_SELECTIONS); intent.EditMarket(mkt, remove_seln_intent); break; default: throw new Exception("Unknow status"); } } }