/// <inheritdoc /> public void SetScenario(string scenario, ScenarioStateModel scenarioState) { if (string.IsNullOrWhiteSpace(scenario) || scenarioState == null) { return; } lock (_scenarioStateStore.GetScenarioLock(scenario)) { var existingScenario = _scenarioStateStore.GetScenario(scenario); if (existingScenario == null) { if (string.IsNullOrWhiteSpace(scenarioState.State)) { scenarioState.State = Constants.DefaultScenarioState; } _scenarioStateStore.AddScenario(scenario, scenarioState); } else { if (scenarioState.HitCount == -1) { scenarioState.HitCount = existingScenario.HitCount; } if (string.IsNullOrWhiteSpace(scenarioState.State)) { scenarioState.State = existingScenario.State; } _scenarioStateStore.UpdateScenario(scenario, scenarioState); } } }
/// <inheritdoc /> public ConditionCheckResultModel Validate(StubModel stub) { var result = new ConditionCheckResultModel(); var state = stub.Conditions?.Scenario?.ScenarioState; var scenario = stub.Scenario; if (string.IsNullOrWhiteSpace(state) || string.IsNullOrWhiteSpace(scenario)) { return(result); } var scenarioState = _scenarioService.GetScenario(scenario); if (scenarioState == null) { scenarioState = new ScenarioStateModel(scenario); _scenarioService.SetScenario(scenario, scenarioState); } if (!string.Equals(scenarioState.State.Trim(), state.Trim(), StringComparison.OrdinalIgnoreCase)) { result.Log = $"Scenario '{stub.Scenario}' is in state '{scenarioState.State}', but '{state}' was expected."; result.ConditionValidation = ConditionValidationType.Invalid; } else { result.ConditionValidation = ConditionValidationType.Valid; } return(result); }
/// <summary> /// Constructs a <see cref="SetScenarioCommand"/> instance /// </summary> /// <param name="scenarioStateModel">The scenario.</param> /// <param name="scenarioName">The scenario name.</param> public SetScenarioCommand(ScenarioStateModel scenarioStateModel, string scenarioName) { ScenarioStateModel = scenarioStateModel; ScenarioName = scenarioName; }