public void There_are_no_retry_exception_types_by_default() { var sut = new FakeWorkflowConfiguration(); Assert.NotNull(sut.RetryExceptionTypes); Assert.Equal(0, sut.RetryExceptionTypes.Count); }
public void There_are_no_behavior_factories_by_default() { var sut = new FakeWorkflowConfiguration(); Assert.NotNull(sut.BehaviorFactories); Assert.Equal(0, sut.BehaviorFactories.Count); }
public void You_can_fluently_assign_the_operation_resolver(IOperationResolver resolver) { var sut = new FakeWorkflowConfiguration(); sut.WithResolver(resolver); Assert.Equal(resolver, sut.Resolver); }
public void You_can_fluently_assign_the_workflow_logger(IWorkflowLogger logger) { var sut = new FakeWorkflowConfiguration(); sut.WithLogger(logger); Assert.Equal(logger, sut.Logger); }
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); }
public void Fluently_assigning_workflow_logger_returns_configuration() { var sut = new FakeWorkflowConfiguration(); var result = sut.WithLogger(new FakeWorkflowLogger()); Assert.Equal(sut, result); }
public void Fluently_assigning_behavior_factories_returns_configuration() { var sut = new FakeWorkflowConfiguration(); var result = sut.WithBehaviorFactory(new FakeOperationBehaviorFactory()); Assert.Equal(sut, result); }
public void Fluently_assigning_operation_resolver_returns_configuration(IOperationResolver resolver) { var sut = new FakeWorkflowConfiguration(); var result = sut.WithResolver(resolver); Assert.Equal(sut, result); }
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]); }
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); }
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); }
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]); }
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); }
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); }
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))); }