private static void ConfigureAutofac() { var repository = new InMemoryMovieRepository(); var bus = new MessageBus(); bus.Register <CreateMovie>(x => CommandHandlers.Handle(() => bus, x)); bus.Register <ChangeMovieTitle>(x => CommandHandlers.Handle(() => bus, x)); bus.Register <MovieCreated>(x => EventHandlers.Handle(() => repository, x)); bus.Register <MovieTitleChanged>(x => EventHandlers.Handle(() => repository, x)); bus.Send(new CreateMovie(Guid.NewGuid(), "Pupl Fiction", new DateTime(1994, 1, 1), "Crime", 8.5m)); bus.Send(new CreateMovie(Guid.NewGuid(), "From Dusk Till Dawn", new DateTime(2003, 1, 1), "Action", 8.99m)); var builder = new ContainerBuilder(); builder.RegisterControllers(typeof(MvcApplication).Assembly); builder.RegisterType <MoviesController>() .WithParameter("commandSender", bus) .WithParameter("movieQueryFacade", repository); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); }
public async Task RoverInstructionsCommandWithValidRoverSucceeds() { var mapGridMock = new Mock <IMapGrid>(); mapGridMock.Setup(x => x.Width).Returns(10); mapGridMock.Setup(x => x.Height).Returns(10); var roversMgrMock = new Mock <IRoversManager>(); var roverMock = new Mock <IRover>(); roverMock.Setup(x => x.X).Returns(1); roverMock.Setup(x => x.Y).Returns(1); roverMock.Setup(x => x.Orientation).Returns(OrientationEnum.N); roverMock.Setup(x => x.ExecuteInstruction(It.IsAny <char>())).Verifiable(); roversMgrMock.Setup(x => x.ActiveRover).Returns(roverMock.Object); var cmdMock = new Mock <RoverInstructionsCommand>(); cmdMock.Setup(x => x.Instructions).Returns(new List <char>("XX")); var handler = new CommandHandlers(mapGridMock.Object, roversMgrMock.Object); var consoleOutput = new StringWriter(); Console.SetOut(consoleOutput); await handler.Handle(cmdMock.Object, new CancellationToken()); roverMock.Verify(x => x.ExecuteInstruction(It.IsAny <char>()), Times.Exactly(2)); roverMock.Object.Lost.Should().BeFalse(); consoleOutput.ToString().Should().Be("1 1 N\r\n"); }
public async Task MapGridInitializerCommandCallsMapGridInitializer() { var mapGridMock = new Mock <IMapGrid>(); var roversMgrMock = new Mock <IRoversManager>(); var cmdMock = new Mock <MapGridInitializerCommand>(); cmdMock.Setup(x => x.Width).Returns(10); cmdMock.Setup(x => x.Height).Returns(10); var handler = new CommandHandlers(mapGridMock.Object, roversMgrMock.Object); await handler.Handle(cmdMock.Object, new CancellationToken()); mapGridMock.Verify(x => x.Initialize(10, 10), Times.Once); }
public async Task NewRoverCommandCallsAddRoverAndGeneratesNewActiveOne() { var mapGridMock = new Mock <IMapGrid>(); var roversMgrMock = new Mock <IRoversManager>(); var cmdMock = new Mock <NewRoverCommand>(); cmdMock.Setup(x => x.StartingX).Returns(1); cmdMock.Setup(x => x.StartingY).Returns(1); cmdMock.Setup(x => x.StartingOrientation).Returns(OrientationEnum.N); var handler = new CommandHandlers(mapGridMock.Object, roversMgrMock.Object); await handler.Handle(cmdMock.Object, new CancellationToken()); roversMgrMock.Verify(x => x.AddRover(1, 1, OrientationEnum.N), Times.Once); }
public async Task RoverInstructionsCommandWithNoActiveRoverDoesNothing() { var mapGridMock = new Mock <IMapGrid>(); var roversMgrMock = new Mock <IRoversManager>(); roversMgrMock.Setup(x => x.ActiveRover).Returns((IRover)null); var cmdMock = new Mock <RoverInstructionsCommand>(); cmdMock.Setup(x => x.Instructions).Returns(It.IsAny <List <char> >()); var handler = new CommandHandlers(mapGridMock.Object, roversMgrMock.Object); var consoleOutput = new StringWriter(); Console.SetOut(consoleOutput); await handler.Handle(cmdMock.Object, new CancellationToken()); roversMgrMock.VerifyGet(x => x.ActiveRover); consoleOutput.ToString().Should().Be(string.Empty); }
private static void Start() { var repository = new InMemoryMovieRepository(); var bus = new MessageBus(); bus.Register <CreateMovie>(x => CommandHandlers.Handle(() => bus, x)); bus.Register <ChangeMovieTitle>(x => CommandHandlers.Handle(() => bus, x)); bus.Register <MovieCreated>(x => EventHandlers.Handle(() => repository, x)); bus.Register <MovieTitleChanged>(x => EventHandlers.Handle(() => repository, x)); bus.Send(new CreateMovie(Guid.NewGuid(), "Pupl Fiction", new DateTime(1994, 1, 1), "Crime", 8.5m)); bus.Send(new CreateMovie(Guid.NewGuid(), "From Dusk Till Dawn", new DateTime(2003, 1, 1), "Action", 8.99m)); var mainWindow = new MainWindow { DataContext = new MovieListViewModel(bus, repository) }; mainWindow.ShowDialog(); }
static void Main(string[] args) { var repository = new InMemoryMovieRepository(); var bus = new MessageBus(); bus.Register <CreateMovie>(x => CommandHandlers.Handle(() => bus, x)); bus.Register <ChangeMovieTitle>(x => CommandHandlers.Handle(() => bus, x)); bus.Register <MovieCreated>(x => EventHandlers.Handle(() => repository, x)); bus.Register <MovieTitleChanged>(x => EventHandlers.Handle(() => repository, x)); bus.Register <MovieCreated>(x => OnMovieInserted(repository)); bus.Register <MovieTitleChanged>(x => OnTitleChanged(repository)); bus.Send(new CreateMovie(Guid.NewGuid(), "Pupl Fiction", new DateTime(1994, 1, 1), "Crime", 8.5m)); bus.Send(new CreateMovie(Guid.NewGuid(), "From Dusk Till Dawn", new DateTime(2003, 1, 1), "Action", 8.99m)); var id = repository.GetAll().ElementAt(1).Id; bus.Send(new ChangeMovieTitle(id, "Kill Bill Vol. I")); }