Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #8
0
        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);
        }