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 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 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 You_cannot_create_behaviors_without_a_configuration(IOperation operation)
        {
            var sut = new WorkflowRetryBehaviorFactory();

            Assert.Throws<ArgumentNullException>(() => sut.CreateBehaviors(operation, null));
        }