Exemplo n.º 1
0
        public void Throws_actual_exception_thrown_by_target_method()
        {
            var targetWorkflow = new MethodThrowsException(new Exception(""));
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            Assert.Throws <Exception>(() => workflowMethod.Invoke(_argument));
        }
Exemplo n.º 2
0
        public void Returns_empty_workflow_action_when_target_method_returns_void()
        {
            var workflowMethod = WorkflowEventMethods.For(new TestClassWithPrivateMethod()).EventMethod(_eventName);

            var workflowAction = workflowMethod.Invoke(_argument);

            Assert.That(workflowAction, Is.EqualTo(WorkflowAction.Empty));
        }
Exemplo n.º 3
0
        public void Return_workflow_empty_action_when_target_method_returns_null()
        {
            var workflowMethod = WorkflowEventMethods.For(new MethodReturnsNull()).EventMethod(_eventName);

            var workflowAction = workflowMethod.Invoke(_argument);

            Assert.That(workflowAction, Is.EqualTo(WorkflowAction.Empty));
        }
Exemplo n.º 4
0
        public void Pass_the_source_parameter_to_target_method_when_both_parameters_are_of_same_type()
        {
            var targetWorkflow = new MethodWithParameterOfSameClass();
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.InvokedWith, Is.EqualTo(_argument));
        }
Exemplo n.º 5
0
        public void Pass_the_source_parameter_to_target_method_when_target_type_is_assignable_from_source_parameter()
        {
            var targetWorkflow = new MethodWithParameterOfBaseClass();
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.InvokedWith, Is.EqualTo(_argument));
        }
Exemplo n.º 6
0
        public void Returns_workflow_action_of_target_method()
        {
            var expectedWorkflowAction = new Mock <WorkflowAction>().Object;
            var workflowMethod         = WorkflowEventMethods.For(new TestClassToReturnWorkflowAction(expectedWorkflowAction)).EventMethod(_eventName);

            var workflowAction = workflowMethod.Invoke(_argument);

            Assert.That(workflowAction, Is.EqualTo(expectedWorkflowAction));
        }
Exemplo n.º 7
0
        public void Can_invoke_the_private_method_with_matching_attribute()
        {
            var targetWorkflow = new TestClassWithPrivateMethod();
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.TestMethodInvoked);
        }
Exemplo n.º 8
0
        public void Throws_exception_when_deserialized_property_can_not_be_assigned_to_method_parameter()
        {
            var targetWorkflow = new MethodWithIncompatibleArgumentType();

            _argument.Reason  = "reason3";
            _argument.EventId = 56;
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            Assert.Throws <InvalidMethodSignatureException>(() => workflowMethod.Invoke(_argument));
        }
Exemplo n.º 9
0
        public void Can_pass_source_primitive_type_to_string_parameters()
        {
            var targetWorkflow = new MethodWithStringParamemtersForPrimitiveStructType();
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            _argument.EventTime = DateTime.Now;

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.EventId, Is.EqualTo(_argument.EventId.ToString()));
            Assert.That(targetWorkflow.EventTime, Is.EqualTo(_argument.EventTime.ToString()));
        }
Exemplo n.º 10
0
        public void Pass_default_value_in_struct_when_source_string_property_is_null()
        {
            var targetWorkflow = new MethodDeserialingStringInToStruct();
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            _argument.Reason = null;

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.Reason.Id, Is.EqualTo(0));
            Assert.That(targetWorkflow.Reason.Details, Is.Null);
        }
Exemplo n.º 11
0
        public void Deserialize_the_properties_of_source_event_into_parameters_when_name_and_type_matches()
        {
            var targetWorkflow = new MethodWithDeserializedArguments();

            _argument.Reason  = "reason3";
            _argument.EventId = 56;
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.Argument1, Is.EqualTo("reason3"));
            Assert.That(targetWorkflow.Argument2, Is.EqualTo(56));
        }
Exemplo n.º 12
0
        public void Can_deserialize_properties_with_null_values_in_to_parameter_arguments()
        {
            var targetWorkflow = new MethodWithDeserializedArguments();

            _argument.Reason  = null;
            _argument.EventId = 56;
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.Argument1, Is.Null);
            Assert.That(targetWorkflow.Argument2, Is.EqualTo(56));
        }
Exemplo n.º 13
0
        public void Can_pass_properties_of_source_event_along_with_event_to_target_method_properties()
        {
            var targetWorkflow = new MethodWithDeserializedArgumentsAndSourcEvent();

            _argument.Reason  = "reason3";
            _argument.EventId = 56;
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.Argument1, Is.EqualTo("reason3"));
            Assert.That(targetWorkflow.Argument2, Is.EqualTo(56));
            Assert.That(targetWorkflow.Argument3, Is.EqualTo(_argument));
        }
Exemplo n.º 14
0
        public void Deserialize_the_json_string_in_to_complex_argument()
        {
            var targetWorkflow = new MethodDeserializeJsonInToComplextObject();

            _argument.Reason = new Reason()
            {
                Id = 10, Details = "details"
            }.ToJson();
            _argument.EventId = 56;
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.EventId, Is.EqualTo(56));
            Assert.That(targetWorkflow.Reason.Id, Is.EqualTo(10));
            Assert.That(targetWorkflow.Reason.Details, Is.EqualTo("details"));
        }
Exemplo n.º 15
0
        public void Pass_default_values_to_parameters_when_not_found_in_event()
        {
            var targetWorkflow = new MethodWithNonExistingArgument();

            _argument.Reason  = "reason3";
            _argument.EventId = 56;
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);

            workflowMethod.Invoke(_argument);

            Assert.That(targetWorkflow.NotExistString, Is.Null);
            Assert.That(targetWorkflow.NotExistLong, Is.EqualTo(0));
            Assert.That(targetWorkflow.NotExistBool, Is.EqualTo(false));
            Assert.That(targetWorkflow.NonExistReason, Is.Null);
            Assert.That(targetWorkflow.NonExistStructArg.Id, Is.EqualTo(0));
            Assert.That(targetWorkflow.NonExistStructArg.Details, Is.Null);
        }
Exemplo n.º 16
0
        public void Can_pass_source_string_type_to_primitive_type_parameters()
        {
            var targetWorkflow = new MethodWithPrimitiveType();
            var workflowMethod = WorkflowEventMethods.For(targetWorkflow).EventMethod(_eventName);
            var argument       = new ArgumentInStringFormat(10, DateTime.UtcNow)
            {
                Duration  = TimeSpan.FromSeconds(2).ToString(),
                EventId   = 10.ToString(),
                EventTime = DateTime.Now.ToString(),
                Reason    = true.ToString()
            };

            workflowMethod.Invoke(argument);

            Assert.That(targetWorkflow.EventId, Is.EqualTo(10));
            Assert.That(targetWorkflow.EventTime, Is.EqualTo(DateTime.Parse(argument.EventTime)));
            Assert.That(targetWorkflow.Duration, Is.EqualTo(TimeSpan.Parse(argument.Duration)));
            Assert.That(targetWorkflow.Reason, Is.EqualTo(bool.Parse(argument.Reason)));
        }
Exemplo n.º 17
0
 public void Throws_exception_when_target_method_return_type_is_other_then_void_or_workflow_action()
 {
     Assert.Throws <InvalidMethodSignatureException>(() => WorkflowEventMethods.For(new TestClassWithIncompatibleReturnType()).EventMethod(_eventName));
 }
Exemplo n.º 18
0
 public void Can_return_null_when_target_method_not_found()
 {
     Assert.That(WorkflowEventMethods.For(new EmptyWorkflow()).EventMethod(_eventName), Is.Null);
 }
Exemplo n.º 19
0
 public void Throws_exception_when_multiple_methods_are_found_for_same_event()
 {
     Assert.Throws <AmbiguousWorkflowMethodException>(() => WorkflowEventMethods.For(new TestClassWithMultipleMethods()).EventMethod(_eventName));
 }