public void The_simple_resolver_cannot_resolve_operations_with_unregistered_sub_dependencies(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency<ComplexDependency, ComplexDependency>(); Assert.Throws<InvalidOperationException>(() => sut.Resolve<OperationWithComplexDependencies>(configuration)); }
public void The_simple_resolver_can_resolve_operations_without_any_dependencies(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); var result = sut.Resolve<SimpleTestOperation>(configuration); Assert.NotNull(result); }
public void Operations_having_more_than_one_constructor_cannot_be_resolved(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency <SimpleDependency, SimpleDependency>(); Assert.Throws <InvalidOperationException>(() => sut.Resolve <OperationWithTwoConstructors>(configuration)); }
public void The_simple_resolver_cannot_resolve_operations_with_unregistered_sub_dependencies(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency <ComplexDependency, ComplexDependency>(); Assert.Throws <InvalidOperationException>(() => sut.Resolve <OperationWithComplexDependencies>(configuration)); }
public void The_simple_resolver_can_resolve_operations_without_any_dependencies(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); var result = sut.Resolve <SimpleTestOperation>(configuration); Assert.NotNull(result); }
public void The_simple_resolver_can_resolve_operations_with_registered_dependencies(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency<SimpleDependency, SimpleDependency>(); var result = sut.Resolve<OperationWithDependencies>(configuration); Assert.NotNull(result); }
public void Dependencies_can_be_registered_as_implementations(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency <IDependency, SimpleDependency>(); var result = sut.Resolve <OperationWithInterfaceDependency>(configuration); Assert.NotNull(result); }
public void The_simple_resolver_can_resolve_operations_with_registered_instance_dependencies(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependencyInstance(new SimpleDependency()); var result = sut.Resolve <OperationWithDependencies>(configuration); Assert.NotNull(result); }
public void You_can_register_the_same_dependency_more_than_once(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency<SimpleDependency, SimpleDependency>(); sut.RegisterOperationDependency<SimpleDependency, SimpleDependency>(); var result = sut.Resolve<OperationWithDependencies>(configuration); Assert.NotNull(result); }
public void You_can_create_a_behavior_with_compensated_exception_types(WorkflowConfiguration configuration, SimpleOperationResolver resolver) { var sut = new CompensatingOperationAttribute(typeof(TestOperation), typeof(Exception)); configuration.WithResolver(resolver); var result = sut.CreateBehavior(configuration); Assert.NotNull(result); Assert.IsType<CompensatingOperationBehavior>(result); }
public void Resolving_the_same_operation_twice_returns_two_different_instances(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency<SimpleDependency, SimpleDependency>(); var result1 = sut.Resolve<SimpleTestOperation>(configuration); var result2 = sut.Resolve<SimpleTestOperation>(configuration); Assert.NotSame(result1, result2); }
public void You_can_register_the_same_instance_dependency_more_than_once(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependencyInstance(new SimpleDependency()); sut.RegisterOperationDependencyInstance(new SimpleDependency()); var result = sut.Resolve <OperationWithDependencies>(configuration); Assert.NotNull(result); }
public void Resolving_the_same_operation_twice_returns_two_different_instances(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency <SimpleDependency, SimpleDependency>(); var result1 = sut.Resolve <SimpleTestOperation>(configuration); var result2 = sut.Resolve <SimpleTestOperation>(configuration); Assert.NotSame(result1, result2); }
public void Dependencies_are_resolved_as_new_instances_every_time(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency <SimpleDependency, SimpleDependency>(); var result1 = sut.Resolve <OperationWithDependencies>(configuration) as OperationWithDependencies; var result2 = sut.Resolve <OperationWithDependencies>(configuration) as OperationWithDependencies; Assert.NotSame(result1.Dependency, result2.Dependency); }
public void You_can_create_a_behavior(WorkflowConfiguration configuration, SimpleOperationResolver resolver) { var sut = new CompensatingOperationAttribute(typeof(TestOperation)); configuration.WithResolver(resolver); var result = sut.CreateBehavior(configuration); Assert.NotNull(result); Assert.IsType <CompensatingOperationBehavior>(result); }
public void The_simple_resolver_can_resolve_operations_with_nested_dependencies(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency <SimpleDependency, SimpleDependency>(); sut.RegisterOperationDependency <ComplexDependency, ComplexDependency>(); var result = sut.Resolve <OperationWithComplexDependencies>(configuration); Assert.NotNull(result); }
public void Dependencies_registered_as_instances_are_preferred_over_instances_registered_as_types(WorkflowConfiguration configuration, SimpleDependency instance) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency <SimpleDependency, SimpleDependency>(); sut.RegisterOperationDependencyInstance(instance); var result = (OperationWithDependencies)sut.Resolve <OperationWithDependencies>(configuration); Assert.Equal(instance, result.Dependency); }
public void The_last_registered_dependency_of_a_given_type_wins(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency <SimpleDependency, SimpleDependency>(); sut.RegisterOperationDependency <IDependency, SimpleDependency>(); sut.RegisterOperationDependency <IDependency, ComplexDependency>(); var result = sut.Resolve <OperationWithInterfaceDependency>(configuration) as OperationWithInterfaceDependency; Assert.IsType <ComplexDependency>(result.Dependency); }
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 Resolving_operations_creates_and_applies_behaviors_to_the_created_operations(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); var factory = new FakeOperationBehaviorFactory(); factory.OperationBehaviors.Add(new FakeOperationBehavior { SetPrecedence = BehaviorPrecedence.StateRecovery }); var workflow = configuration.WithBehaviorFactory(factory); var result = sut.Resolve <SimpleTestOperation>(workflow); Assert.IsType <FakeOperationBehavior>(result); Assert.IsType <SimpleTestOperation>((result as OperationBehavior).InnerOperation); }
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 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)); }
static void Main(string[] args) { var resolver = new SimpleOperationResolver(); resolver.RegisterOperationDependency<TaskRepository, TaskRepository>(); resolver.RegisterOperationDependency<EmailService, EmailService>(); var sendTaskNotifications = Workflow.Configure<SendTaskNotificationsWorkflow>(). WithLogger(new TextWriterWorkflowLogger(Console.Out)). WithResolver(resolver). CreateOperation(); sendTaskNotifications.Execute(); Console.WriteLine(); Console.WriteLine("Press eny key to exit"); Console.ReadLine(); }
static void Main(string[] args) { var resolver = new SimpleOperationResolver(); resolver.RegisterOperationDependency <TaskRepository, TaskRepository>(); resolver.RegisterOperationDependency <EmailService, EmailService>(); var sendTaskNotifications = Workflow.Configure <SendTaskNotificationsWorkflow>(). WithLogger(new TextWriterWorkflowLogger(Console.Out)). WithResolver(resolver). CreateOperation(); sendTaskNotifications.Execute(); Console.WriteLine(); Console.WriteLine("Press eny key to exit"); Console.ReadLine(); }
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 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); }
static void Main(string[] args) { var resolver = new SimpleOperationResolver(); resolver.RegisterOperationDependencyInstance <Func <string, IExternalDatabase> >(connectionString => new ExternalDatabase()); resolver.RegisterOperationDependency <IDatabase, Database>(); resolver.RegisterOperationDependency <IEmailService, EmailService>(); resolver.RegisterOperationDependency <ISmsService, SmsService>(); var importUsers = Workflow.Configure <ImportUsersWorkflow>() .WithLogger(new TextWriterWorkflowLogger(Console.Out)) .WithResolver(resolver) .CreateOperation(); importUsers.Execute(); Console.WriteLine(); Console.WriteLine("Press eny key to exit"); Console.ReadLine(); }
public void The_last_registered_dependency_of_a_given_type_wins(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency<SimpleDependency, SimpleDependency>(); sut.RegisterOperationDependency<IDependency, SimpleDependency>(); sut.RegisterOperationDependency<IDependency, ComplexDependency>(); var result = sut.Resolve<OperationWithInterfaceDependency>(configuration) as OperationWithInterfaceDependency; Assert.IsType<ComplexDependency>(result.Dependency); }
public void Dependencies_can_be_registered_as_implementations(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency<IDependency, SimpleDependency>(); var result = sut.Resolve<OperationWithInterfaceDependency>(configuration); Assert.NotNull(result); }
public void Dependencies_are_resolved_as_new_instances_every_time(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency<SimpleDependency, SimpleDependency>(); var result1 = sut.Resolve<OperationWithDependencies>(configuration) as OperationWithDependencies; var result2 = sut.Resolve<OperationWithDependencies>(configuration) as OperationWithDependencies; Assert.NotSame(result1.Dependency, result2.Dependency); }
public void Resolving_operations_creates_and_applies_behaviors_to_the_created_operations(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); var factory = new FakeOperationBehaviorFactory(); factory.OperationBehaviors.Add(new FakeOperationBehavior { SetPrecedence = BehaviorPrecedence.StateRecovery }); var workflow = configuration.WithBehaviorFactory(factory); var result = sut.Resolve<SimpleTestOperation>(workflow); Assert.IsType<FakeOperationBehavior>(result); Assert.IsType<SimpleTestOperation>((result as OperationBehavior).InnerOperation); }
public void Operations_having_more_than_one_constructor_cannot_be_resolved(WorkflowConfiguration configuration) { var sut = new SimpleOperationResolver(); sut.RegisterOperationDependency<SimpleDependency, SimpleDependency>(); Assert.Throws<InvalidOperationException>(() => sut.Resolve<OperationWithTwoConstructors>(configuration)); }