private IIntegrableCompositeStepBuilder WithStepContext(ExecutionContextDescriptor contextDescriptor) { if (_contextDescriptor != null || !ReferenceEquals(_steps, EmptySteps)) { throw new InvalidOperationException("Step context can be specified only once, when no steps are specified yet."); } _contextDescriptor = contextDescriptor; return(this); }
public RunnableScenario(RunnableScenarioContext scenarioContext, ScenarioInfo scenarioInfo, IEnumerable <StepDescriptor> stepDescriptors, ExecutionContextDescriptor contextDescriptor, IEnumerable <IScenarioDecorator> scenarioDecorators) { _scenarioContext = scenarioContext; _stepDescriptors = stepDescriptors; _contextDescriptor = contextDescriptor; _decoratedScenarioMethod = DecoratingExecutor.DecorateScenario(this, RunScenarioAsync, scenarioDecorators); _result = new ScenarioResult(scenarioInfo); }
public IIntegrableCompositeStepBuilder WithStepContext(Func <object> contextProvider, bool takeOwnership) { if (_contextDescriptor != null || !ReferenceEquals(_steps, EmptySteps)) { throw new InvalidOperationException("Step context can be specified only once, when no steps are specified yet."); } _contextDescriptor = new ExecutionContextDescriptor(contextProvider, takeOwnership); return(this); }
private static object InstantiateSubStepsContext(ExecutionContextDescriptor contextDescriptor, IDependencyContainer container) { try { return(contextDescriptor.ContextResolver(container)); } catch (Exception e) { throw new InvalidOperationException($"Sub-steps context initialization failed: {e.Message}", e); } }
public RunnableScenario(ScenarioInfo scenario, Func <DecoratingExecutor, object, IDependencyContainer, RunnableStep[]> stepsProvider, ExecutionContextDescriptor contextDescriptor, IScenarioProgressNotifier progressNotifier, DecoratingExecutor decoratingExecutor, IEnumerable <IScenarioDecorator> scenarioDecorators, ExceptionProcessor exceptionProcessor, IDependencyContainer container) { _info = scenario; _stepsProvider = stepsProvider; _contextDescriptor = contextDescriptor; _progressNotifier = progressNotifier; _decoratingExecutor = decoratingExecutor; _scenarioDecorators = scenarioDecorators; _exceptionProcessor = exceptionProcessor; _container = container; _result = new ScenarioResult(_info); }
public Task ExecuteAsync(ScenarioInfo scenario, Func<DecoratingExecutor, object, IDependencyContainer, RunnableStep[]> stepsProvider, ExecutionContextDescriptor contextDescriptor, IScenarioProgressNotifier progressNotifier, IEnumerable<IScenarioDecorator> scenarioDecorators, ExceptionProcessor exceptionProcessor, IDependencyContainer container) { var runnableScenario = new RunnableScenario(scenario, stepsProvider, contextDescriptor, progressNotifier, _decoratingExecutor, scenarioDecorators, exceptionProcessor, container); try { return runnableScenario.RunAsync(); } finally { ScenarioExecuted?.Invoke(runnableScenario.Result); } }
public ICoreScenarioBuilder WithContext(Func <IDependencyResolver, object> contextProvider, Action <ContainerConfigurator> scopeConfigurator) { _contextDescriptor = new ExecutionContextDescriptor(contextProvider, scopeConfigurator); return(this); }
public ICoreScenarioBuilder WithContext(Func <object> contextProvider, bool takeOwnership) { _contextDescriptor = new ExecutionContextDescriptor(contextProvider, takeOwnership); return(this); }
/// <summary> /// Constructor allowing to initialize instance with sub steps and context provider. /// </summary> /// <param name="subStepsContext">Context descriptor that will be used to instantiate context for the sub steps.</param> /// <param name="subSteps">Sub steps.</param> public CompositeStepResultDescriptor(ExecutionContextDescriptor subStepsContext, IEnumerable <StepDescriptor> subSteps) { SubStepsContext = subStepsContext ?? throw new ArgumentNullException(nameof(subStepsContext)); SubSteps = subSteps; }
internal CompositeStep(ExecutionContextDescriptor contextDescriptor, IEnumerable <StepDescriptor> steps) : base(contextDescriptor, steps) { }
public TestCompositeStep(ExecutionContextDescriptor contextDescriptor, params StepDescriptor[] subSteps) : base(contextDescriptor, subSteps) { }
public ContextProvider(ExecutionContextDescriptor contextDescriptor) { _contextDescriptor = contextDescriptor ?? throw new ArgumentNullException(nameof(contextDescriptor)); }