public void The_outer_operation_is_returned_when_providing_input(FakeInputOperation <object> operation, object input) { var outerOperation = new FakeOperationBehavior().AttachTo(operation); var result = outerOperation.ProvideInput(input); Assert.Same(outerOperation, result); }
public void Inputs_Are_provided_to_the_innermost_operation(FakeInputOperation <object> operation, object input) { var outerOperation = new FakeOperationBehavior().AttachTo(operation); outerOperation.ProvideInput(input); Assert.Same(input, operation.ProvidedInput); }
public void The_inner_operation_of_a_behavior_is_identified_as_the_innermost_operation(IOperation operation) { var sut = new FakeOperationBehavior().AttachTo(operation); var result = sut.GetInnermostOperation(); Assert.Equal(operation, result); }
public void Registering_output_handlers_calls_registration_methods_on_nested_decorated_output_operation(FakeOutputOperation <object> decoratedOperation) { var sut = OperationContext.Create(new FakeOperation()); var operation = new FakeOperationBehavior().AttachTo(new FakeOperationBehavior().AttachTo(decoratedOperation)); sut.RegisterOutputHandlers(operation); Assert.NotNull(decoratedOperation.OnReceiveOutput); }
public void Adding_output_values_does_not_update_the_context_data_when_not_supplied(IOperation op) { var sut = OperationContext.Create(op); var outputOperation = new FakeOperationBehavior().AttachTo(new TestOutputOperation { Output = null }); sut.AddOutput(outputOperation, op); Assert.Null(sut.GetOutput <object>()); }
public void Providing_inputs_to_a_decorated_operation_sets_input_properties(IOperation op, object input) { var sut = OperationContext.Create(op); sut.AddData(input); var innerOperation = new TestInputOperation(); var inputOperation = new FakeOperationBehavior().AttachTo(innerOperation); sut.ProvideInputs(inputOperation); Assert.Equal(input, innerOperation.Input); }
public void The_innermost_operation_is_considered_for_conditional_execution() { var operation = new SkippableOperation { SkipExecution = true }; var innerBehavior = new FakeOperationBehavior().AttachTo(operation); var sut = new ConditionalExecutionBehavior().AttachTo(innerBehavior); sut.Execute(); Assert.False(operation.HasExecuted); }
public void The_innermost_operation_is_logged_as_the_source(FakeWorkflowLogger logger, Exception error) { var innerOperation = new FakeOperation { ThrowOnExecute = error }; var behavior = new FakeOperationBehavior().AttachTo(innerOperation); var sut = new OperationErrorLoggingBehavior(logger).AttachTo(behavior); ExecuteIgnoringErrors(sut.Execute); Assert.Equal(1, logger.OperationFailures[innerOperation].Count); }
public void Applied_behaviors_are_logged_with_the_innermost_operation(IOperation operation, FakeWorkflowLogger log) { var behavior = new FakeOperationBehavior().AttachTo(operation); var sut = new TestBehavior(); sut.AttachTo(behavior); sut.Initialize(new FakeWorkflowConfiguration { Logger = log }); sut.ApplyBahviorLog(Description); Assert.Equal(operation, log.AppliedBehaviors[0].Operation); }
public void Data_flows_from_output_to_nested_decorated_input_operations(IOperation op, object output, FakeInputOperation <object> inputOperation) { var sut = OperationContext.Create(op); var outputOperation = new FakeOutputOperation <object> { OutputValue = output }; var decoratedInputOperation = new FakeOperationBehavior().AttachTo(new FakeOperationBehavior().AttachTo(inputOperation)); sut.RegisterOutputHandlers(outputOperation); outputOperation.Execute(); sut.ProvideInputs(decoratedInputOperation); Assert.Equal(outputOperation.OutputValue, inputOperation.ProvidedInput); }