public void ResolveProvidedArgFirst() { var method = typeof(Handler).GetMethod("Handle", new Type[] { typeof(int?), typeof(string) }); var messageMock = new Mock <IMessage>(); _message = messageMock.Object; _resolvers = new HandlerMethodArgumentResolverComposite(); _resolvers.AddResolver(new StubArgumentResolver(1)); _resolvers.AddResolver(new StubArgumentResolver("value1")); var value = Invoke(new Handler(), method, 2, "value2"); Assert.Equal("2-value2", value); }
public void ResolveNoArgValue() { var messageMock = new Mock <IMessage>(); _message = messageMock.Object; _resolvers = new HandlerMethodArgumentResolverComposite(); _resolvers.AddResolver(new StubArgumentResolver(typeof(int?))); _resolvers.AddResolver(new StubArgumentResolver(typeof(string))); var method = typeof(Handler).GetMethod("Handle", new Type[] { typeof(int?), typeof(string) }); var value = Invoke(new Handler(), method); Assert.Single(GetStubResolver(0).ResolvedParameters); Assert.Single(GetStubResolver(1).ResolvedParameters); Assert.Equal("null-null", value); }
public void ResolveArg() { var messageMock = new Mock <IMessage>(); _message = messageMock.Object; _resolvers = new HandlerMethodArgumentResolverComposite(); _resolvers.AddResolver(new StubArgumentResolver(99)); _resolvers.AddResolver(new StubArgumentResolver("value")); var method = typeof(Handler).GetMethod("Handle", new Type[] { typeof(int?), typeof(string) }); var value = Invoke(new Handler(), method); Assert.Single(GetStubResolver(0).ResolvedParameters); Assert.Single(GetStubResolver(1).ResolvedParameters); Assert.Equal("99-value", value); Assert.Equal("intArg", GetStubResolver(0).ResolvedParameters[0].Name); Assert.Equal("stringArg", GetStubResolver(1).ResolvedParameters[0].Name); }
public void IllegalArgumentException() { var method = typeof(Handler).GetMethod("Handle", new Type[] { typeof(int?), typeof(string) }); var messageMock = new Mock <IMessage>(); _message = messageMock.Object; _resolvers = new HandlerMethodArgumentResolverComposite(); _resolvers.AddResolver(new StubArgumentResolver(typeof(int?), "__not_an_int__")); _resolvers.AddResolver(new StubArgumentResolver("value")); var ex = Assert.Throws <InvalidOperationException>(() => Invoke(new Handler(), method)); Assert.IsType <ArgumentException>(ex.InnerException); Assert.Contains("Endpoint [", ex.Message); Assert.Contains("Method [", ex.Message); Assert.Contains("with argument values:", ex.Message); Assert.Contains("[0] [type=System.String] [value=__not_an_int__]", ex.Message); Assert.Contains("[1] [type=System.String] [value=value", ex.Message); }
public void ExceptionInResolvingArg() { var method = typeof(Handler).GetMethod("Handle", new Type[] { typeof(int?), typeof(string) }); var messageMock = new Mock <IMessage>(); _message = messageMock.Object; _resolvers = new HandlerMethodArgumentResolverComposite(); _resolvers.AddResolver(new ExceptionRaisingArgumentResolver()); Assert.Throws <ArgumentException>(() => Invoke(new Handler(), method)); // expected - allow HandlerMethodArgumentResolver exceptions to propagate }