public void CreateTranscientHandler_InstancianteEachTime() { // Arrange var config = new ProcessorConfiguration(); config.DefaultHandlerLifetime = HandlerLifetime.Transient; ICommandHandlerActivator activator = new DefaultCommandHandlerActivator(); CommandHandlerRequest request1 = new CommandHandlerRequest(config, this.command.Object); CommandHandlerRequest request2 = new CommandHandlerRequest(config, this.command.Object); CommandHandlerDescriptor descriptor = new CommandHandlerDescriptor(config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); CommandHandlerDescriptor descriptor2 = new CommandHandlerDescriptor(config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); // Act var handler1 = activator.Create(request1, descriptor); var handler2 = activator.Create(request1, descriptor); var handler3 = activator.Create(request2, descriptor); var handler4 = activator.Create(request1, descriptor2); // Assert Assert.NotNull(handler1); Assert.NotNull(handler2); Assert.NotNull(handler3); Assert.NotNull(handler4); Assert.NotSame(handler1, handler2); Assert.NotSame(handler1, handler3); Assert.NotSame(handler1, handler4); Assert.NotSame(handler2, handler3); Assert.NotSame(handler2, handler4); Assert.NotSame(handler3, handler4); }
public void WhenCreatingHandlerThrowExceptionThenRethowsInvalidOperationException() { // Arrange ICommandHandlerActivator activator = new DefaultCommandHandlerActivator(); CommandHandlerRequest request = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerDescriptor descriptor = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); this.dependencyResolver .Setup(resolver => resolver.GetService(typeof(SimpleCommandHandler))) .Throws <CommandHandlerNotFoundException>(); bool exceptionRaised = false; // Act try { activator.Create(request, descriptor); } catch (InvalidOperationException) { exceptionRaised = true; } // Assert Assert.True(exceptionRaised); }
public void WhenCreatingHandlerFromTwoDescriptorsAndDependencyResolverThenGetActivatorDepencyResolver() { // Assign ICommandHandlerActivator activator = new DefaultCommandHandlerActivator(); CommandHandlerRequest request = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerDescriptor descriptor1 = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); CommandHandlerDescriptor descriptor2 = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); int[] i = { 0 }; this.dependencyResolver .When(() => i[0] < 1) .Setup(resolver => resolver.GetService(typeof(SimpleCommandHandler))) .Returns(null) .Callback(() => i[0]++); this.dependencyResolver .When(() => i[0] >= 1) .Setup(resolver => resolver.GetService(typeof(SimpleCommandHandler))) .Returns(new SimpleCommandHandler()); // Act activator.Create(request, descriptor1); ICommandHandler commandHandler = activator.Create(request, descriptor2); // Assert Assert.NotNull(commandHandler); Assert.IsType(typeof(SimpleCommandHandler), commandHandler); Assert.Equal(0, descriptor2.Properties.Count); this.dependencyResolver.Verify(resolver => resolver.GetService(typeof(SimpleCommandHandler)), Times.Exactly(2)); }
public void WhenCreatingHandlerWithoutParametersThenThrowsArgumentNullException() { // Assign ICommandHandlerActivator activator = new DefaultCommandHandlerActivator(); CommandHandlerRequest request = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerDescriptor descriptor = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); // Act // Assert ExceptionAssert.ThrowsArgumentNull(() => activator.Create(null, null), "request"); ExceptionAssert.ThrowsArgumentNull(() => activator.Create(null, descriptor), "request"); ExceptionAssert.ThrowsArgumentNull(() => activator.Create(request, null), "descriptor"); }
public void WhenCreatingHandlerFromActivatorThenReturnsHandler() { // Assign ICommandHandlerActivator activator = new DefaultCommandHandlerActivator(); CommandHandlerRequest request = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerDescriptor descriptor = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); this.dependencyResolver.Setup(resolver => resolver.GetService(typeof(SimpleCommandHandler))).Returns(null); // Act ICommandHandler commandHandler = activator.Create(request, descriptor); // Assert Assert.NotNull(commandHandler); Assert.IsType(typeof(SimpleCommandHandler), commandHandler); Assert.Equal(0, descriptor.Properties.Count); this.dependencyResolver.Verify(resolver => resolver.GetService(typeof(SimpleCommandHandler)), Times.Once()); }
public void WhenCreatingHandlerFromTwoDescriptorsThenFastCacheIsNotUsed() { // Assign ICommandHandlerActivator activator = new DefaultCommandHandlerActivator(); CommandHandlerRequest request1 = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerRequest request2 = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerDescriptor descriptor1 = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); CommandHandlerDescriptor descriptor2 = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); this.dependencyResolver.Setup(resolver => resolver.GetService(typeof(SimpleCommandHandler))).Returns(null); // Act activator.Create(request1, descriptor1); ICommandHandler commandHandler = activator.Create(request2, descriptor2); // Assert Assert.NotNull(commandHandler); Assert.IsType(typeof(SimpleCommandHandler), commandHandler); Assert.Equal(1, descriptor2.Properties.Count); this.dependencyResolver.Verify(resolver => resolver.GetService(typeof(SimpleCommandHandler)), Times.Exactly(2)); }
public void WhenCreatingHandlerThrowExceptionThenRethowsInvalidOperationException() { // Arrange ICommandHandlerActivator activator = new DefaultCommandHandlerActivator(); CommandHandlerRequest request = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerDescriptor descriptor = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); this.dependencyResolver .Setup(resolver => resolver.GetService(typeof(SimpleCommandHandler))) .Throws<CommandHandlerNotFoundException>(); bool exceptionRaised = false; // Act try { activator.Create(request, descriptor); } catch (InvalidOperationException) { exceptionRaised = true; } // Assert Assert.True(exceptionRaised); }
public void WhenCreatingHandlerFromTwoDescriptorsThenGetActivatorFromProperties() { // Assign ICommandHandlerActivator activator = new DefaultCommandHandlerActivator(); CommandHandlerRequest request1 = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerRequest request2 = new CommandHandlerRequest(this.config, this.command.Object); CommandHandlerDescriptor descriptor1 = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); CommandHandlerDescriptor descriptor2 = new CommandHandlerDescriptor(this.config, typeof(SimpleCommand), typeof(SimpleCommandHandler)); this.dependencyResolver.Setup(resolver => resolver.GetService(typeof(SimpleCommandHandler))).Returns(null); // Act activator.Create(request1, descriptor1); activator.Create(request2, descriptor2); ICommandHandler commandHandler = activator.Create(request2, descriptor2); // Assert Assert.NotNull(commandHandler); Assert.IsType(typeof(SimpleCommandHandler), commandHandler); Assert.Equal(1, descriptor2.Properties.Count); this.dependencyResolver.Verify(resolver => resolver.GetService(typeof(SimpleCommandHandler)), Times.Exactly(2)); }