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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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); }
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)); }
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())); }
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); }
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)); }
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)); }
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)); }
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")); }
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); }
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))); }
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)); }
public void Can_return_null_when_target_method_not_found() { Assert.That(WorkflowEventMethods.For(new EmptyWorkflow()).EventMethod(_eventName), Is.Null); }
public void Throws_exception_when_multiple_methods_are_found_for_same_event() { Assert.Throws <AmbiguousWorkflowMethodException>(() => WorkflowEventMethods.For(new TestClassWithMultipleMethods()).EventMethod(_eventName)); }