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