Beispiel #1
0
        public void There_are_no_retry_exception_types_by_default()
        {
            var sut = new FakeWorkflowConfiguration();

            Assert.NotNull(sut.RetryExceptionTypes);
            Assert.Equal(0, sut.RetryExceptionTypes.Count);
        }
Beispiel #2
0
        public void There_are_no_behavior_factories_by_default()
        {
            var sut = new FakeWorkflowConfiguration();

            Assert.NotNull(sut.BehaviorFactories);
            Assert.Equal(0, sut.BehaviorFactories.Count);
        }
Beispiel #3
0
        public void You_can_fluently_assign_the_operation_resolver(IOperationResolver resolver)
        {
            var sut = new FakeWorkflowConfiguration();

            sut.WithResolver(resolver);

            Assert.Equal(resolver, sut.Resolver);
        }
Beispiel #4
0
        public void You_can_fluently_assign_the_workflow_logger(IWorkflowLogger logger)
        {
            var sut = new FakeWorkflowConfiguration();

            sut.WithLogger(logger);

            Assert.Equal(logger, sut.Logger);
        }
Beispiel #5
0
        public void Fluently_assigning_retry_exception_types_returns_configuration()
        {
            var sut = new FakeWorkflowConfiguration();

            var result = sut.WithGlobalRetryBehavior(3, TimeSpan.FromSeconds(5), typeof(Exception));

            Assert.Equal(sut, result);
        }
Beispiel #6
0
        public void Fluently_assigning_workflow_logger_returns_configuration()
        {
            var sut = new FakeWorkflowConfiguration();

            var result = sut.WithLogger(new FakeWorkflowLogger());

            Assert.Equal(sut, result);
        }
Beispiel #7
0
        public void Fluently_assigning_behavior_factories_returns_configuration()
        {
            var sut = new FakeWorkflowConfiguration();

            var result = sut.WithBehaviorFactory(new FakeOperationBehaviorFactory());

            Assert.Equal(sut, result);
        }
Beispiel #8
0
        public void Fluently_assigning_operation_resolver_returns_configuration(IOperationResolver resolver)
        {
            var sut = new FakeWorkflowConfiguration();

            var result = sut.WithResolver(resolver);

            Assert.Equal(sut, result);
        }
Beispiel #9
0
        public void You_can_fluently_assign_behavior_factories(IOperationBehaviorFactory factory)
        {
            var sut = new FakeWorkflowConfiguration();

            sut.WithBehaviorFactory(factory);

            Assert.Equal(1, sut.BehaviorFactories.Count);
            Assert.Equal(factory, sut.BehaviorFactories[0]);
        }
Beispiel #10
0
        public void When_workflow_configuration_does_not_have_retry_exception_types_no_behaviors_are_created(IOperation operation)
        {
            var configuration = new FakeWorkflowConfiguration();
            var sut           = new WorkflowRetryBehaviorFactory();

            var result = sut.CreateBehaviors(operation, configuration);

            Assert.Equal(0, result.Count);
        }
        public void The_decorator_forwards_the_initialization_to_the_decorated_operation(FakeOperation operation)
        {
            var sut           = new TestBehavior().AttachTo(operation);
            var configuration = new FakeWorkflowConfiguration();

            sut.Initialize(configuration);

            Assert.Equal(configuration, operation.InitializedConfiguration);
        }
Beispiel #12
0
        public void When_workflow_configuration_has_retry_exception_types_a_retry_behavior_is_added_to_every_operation_with_those_exception_types(IOperation operation)
        {
            var configuration = new FakeWorkflowConfiguration().WithGlobalRetryBehavior(3, TimeSpan.FromSeconds(5), typeof(Exception));
            var sut           = new WorkflowRetryBehaviorFactory();

            var result = sut.CreateBehaviors(operation, configuration);

            Assert.Equal(1, result.Count);
            Assert.IsType <RetryBehavior>(result[0]);
        }
        public void Creating_an_operation_initializes_it_with_the_configuration_of_the_parent_operation()
        {
            var correctConfiguration = new FakeWorkflowConfiguration {
                Resolver = new SimpleOperationResolver()
            };

            var result = (TestOperation)Operation.Create <TestOperation>(correctConfiguration);

            Assert.Equal(correctConfiguration, result.Configuration);
        }
        public void You_can_create_operation_with_a_configuration_containing_a_resolver(IOperationResolver resolver)
        {
            var correctConfiguration = new FakeWorkflowConfiguration {
                Resolver = resolver
            };

            var result = Operation.Create <TestOperation>(correctConfiguration);

            Assert.NotNull(result);
        }
Beispiel #15
0
        public void You_can_fluently_assign_retry_behavior()
        {
            var sut = new FakeWorkflowConfiguration();

            sut.WithGlobalRetryBehavior(3, TimeSpan.FromSeconds(5), typeof(Exception));

            Assert.Equal(3, sut.TimesToRetry);
            Assert.Equal(TimeSpan.FromSeconds(5), sut.RetryDelay);
            Assert.Equal(1, sut.RetryExceptionTypes.Count);
            Assert.Equal(typeof(Exception), sut.RetryExceptionTypes[0]);
        }
Beispiel #16
0
        public void Retry_behaviors_are_created_with_the_settings_from_the_workflow_configuration(IOperation operation)
        {
            var configuration = new FakeWorkflowConfiguration().WithGlobalRetryBehavior(3, TimeSpan.FromSeconds(5), typeof(Exception));
            var sut           = new WorkflowRetryBehaviorFactory();

            var result = sut.CreateBehaviors(operation, configuration);

            var retryBehavior = (RetryBehavior)result[0];

            Assert.Equal(new[] { typeof(Exception) }, retryBehavior.RetryExceptionTypes);
            Assert.Equal(3, retryBehavior.TimesToRetry);
            Assert.Equal(TimeSpan.FromSeconds(5), retryBehavior.RetryDelay);
        }
Beispiel #17
0
        public void The_logging_behaviors_are_created_when_the_log_is_defined_on_the_configuration(IWorkflowLogger logger, IOperation operation)
        {
            var sut           = new OperationLoggingBehaviorFactory();
            var configuration = new FakeWorkflowConfiguration {
                Logger = logger
            };

            var result = sut.CreateBehaviors(operation, configuration);

            Assert.Equal(2, result.Count);
            Assert.IsType <OperationExecutionLoggingBehavior>(result[0]);
            Assert.IsType <OperationErrorLoggingBehavior>(result[1]);
        }
        public void You_can_create_a_new_operation_from_an_initialized_operation_instance()
        {
            var resolver             = new SimpleOperationResolver();
            var correctConfiguration = new FakeWorkflowConfiguration {
                Resolver = resolver
            };
            var sut = new FakeOperation();

            sut.Initialize(correctConfiguration);

            var result = sut.PublicCreate <TestOperation>() as TestOperation;

            Assert.NotNull(result);
        }
        public void You_cannot_create_an_operation_with_an_input_value_without_specifying_an_input_property_with_the_proper_type(IEnumerable <string> input)
        {
            var resolver = new SimpleOperationResolver();
            var factory  = new FakeOperationBehaviorFactory();

            factory.OperationBehaviors.Add(new FakeOperationBehavior());
            var correctConfiguration = new FakeWorkflowConfiguration {
                Resolver = resolver
            }.WithBehaviorFactory(factory);
            var sut = new FakeOperation();

            sut.Initialize(correctConfiguration);

            Assert.Throws <ArgumentException>(() => sut.PublicCreate <SimpleTestPropertyInputOperation, IEnumerable <string> >(input));
        }
        public void Created_input_operations_are_provided_with_one_property_input_value(object input)
        {
            var resolver             = new SimpleOperationResolver();
            var correctConfiguration = new FakeWorkflowConfiguration {
                Resolver = resolver
            };
            var sut = new FakeOperation();

            sut.Initialize(correctConfiguration);

            var result = sut.PublicCreate <SimpleTestPropertyInputOperation, object>(input) as SimpleTestPropertyInputOperation;

            Assert.NotNull(result.Input);
            Assert.Equal(input, result.Input);
        }
        public void Data_is_piped_to_child_operations_when_creating_the_piping_operation_using_explicit_input_values(object data)
        {
            var sut = new ParentInputOperation <TestPipedPropertyInputOperation <SimpleTestPropertyInputOperation> > {
                Input = data
            };
            var correctConfiguration = new FakeWorkflowConfiguration {
                Resolver = new SimpleOperationResolver()
            };

            sut.Initialize(correctConfiguration);

            sut.Execute();

            var childOperation = (SimpleTestPropertyInputOperation)((Operation)sut.ExecutedChildOperations.First().Operation).ExecutedChildOperations.First().Operation;

            Assert.Equal(data, childOperation.Input);
        }
        public void Created_input_operations_are_provided_with_input_values_when_having_behaviors(object input)
        {
            var resolver = new SimpleOperationResolver();
            var factory  = new FakeOperationBehaviorFactory();

            factory.OperationBehaviors.Add(new FakeOperationBehavior());
            var correctConfiguration = new FakeWorkflowConfiguration {
                Resolver = resolver
            }.WithBehaviorFactory(factory);
            var sut = new FakeOperation();

            sut.Initialize(correctConfiguration);

            var result = sut.PublicCreate <SimpleTestPropertyInputOperation, object>(input).GetInnermostOperation() as SimpleTestPropertyInputOperation;

            Assert.NotNull(result.Input);
            Assert.Equal(input, result.Input);
        }
        public void Created_input_operations_are_provided_with_two_input_values(Tuple <object> input1, Tuple <object, object> input2)
        {
            var resolver             = new SimpleOperationResolver();
            var correctConfiguration = new FakeWorkflowConfiguration {
                Resolver = resolver
            };
            var sut = new FakeOperation();

            sut.Initialize(correctConfiguration);

            var result = sut.PublicCreate <SimpleTestPropertyInputOperation <Tuple <object>, Tuple <object, object>, object>, Tuple <object>, Tuple <object, object> >(input1, input2) as SimpleTestPropertyInputOperation <Tuple <object>, Tuple <object, object>, object>;

            Assert.NotNull(result.Input1);
            Assert.Equal(input1, result.Input1);
            Assert.NotNull(result.Input2);
            Assert.Equal(input2, result.Input2);
            Assert.Null(result.Input3);
        }
Beispiel #24
0
        public void You_cannot_assign_a_retry_exception_type_that_is_not_an_exception_type()
        {
            var sut = new FakeWorkflowConfiguration();

            Assert.Throws <ArgumentException>(() => sut.WithGlobalRetryBehavior(3, TimeSpan.FromSeconds(5), typeof(object)));
        }