public void ShouldLogFailedCommand()
        {
            var testCommand = new EnterGameResultsCommand();

            testCommand.GameDate  = DateTime.Now.AddDays(-2);
            testCommand.CommandId = Guid.NewGuid();
            testCommand.GameId    = Guid.NewGuid();
            testCommand.IPAddress = "12.34.56.78";
            testCommand.User      = "******";
            testCommand.Timestamp = DateTime.Now;

            var newPlayerA = new EnterGameResultsCommand.GamePlayer();

            newPlayerA.PlayerName = "Dylan Smith";
            newPlayerA.Placing    = 1;
            newPlayerA.Winnings   = 120;
            newPlayerA.PayIn      = 60;

            var newPlayerB = new EnterGameResultsCommand.GamePlayer();

            newPlayerB.PlayerName = "Homer Simpson";
            newPlayerB.Placing    = 2;
            newPlayerB.Winnings   = 0;
            newPlayerB.PayIn      = 60;

            var players = new List <EnterGameResultsCommand.GamePlayer>();

            players.Add(newPlayerA);
            players.Add(newPlayerB);

            testCommand.Players = players;

            var mockCommandRepository = new Mock <ICommandRepository>();
            var mockEventRepository   = new Mock <IEventRepository>();
            var mockQueryService      = new Mock <IQueryService>();

            var sut = new CommandHandlerFactory(
                mockEventRepository.Object,
                mockQueryService.Object,
                mockCommandRepository.Object);

            var ex = new ArgumentException("foo");

            mockEventRepository.Setup(x => x.PublishEvents(It.IsAny <IAggregateRoot>(), testCommand)).Throws(ex);

            try
            {
                sut.ExecuteCommand(testCommand);
            }
            catch
            {
                // eat all exceptions
            }

            mockCommandRepository.Verify(x => x.LogCommand(testCommand));
            mockCommandRepository.Verify(x => x.LogFailedCommand(testCommand, ex));
        }
示例#2
0
        public void RunTest(IEnumerable <ICommand> commands)
        {
            Setup();

            var repository = new FakeEventRepository();

            repository.InitialEvents = Given();

            var queryDataStore = new FakeQueryDataStore();
            var queryService   = new QueryHandlerFactory(queryDataStore);

            var commandRepository = new Mock <ICommandRepository>();

            HandleEvents(repository.InitialEvents, queryDataStore);

            Exception caughtException       = null;
            var       commandHandlerFactory = new CommandHandlerFactory(repository, queryService, commandRepository.Object);

            var generatedEvents = new List <IEvent>();

            foreach (var command in commands)
            {
                try
                {
                    commandHandlerFactory.ExecuteCommand(command);
                }
                catch (Exception e)
                {
                    if (ExpectedException() == null)
                    {
                        throw;
                    }

                    caughtException = e;
                }

                HandleEvents(repository.EventList, queryDataStore);
                generatedEvents.AddRange(repository.EventList);
                repository.InitialEvents = new List <IEvent>(repository.InitialEvents).Concat(repository.EventList).ToList();
                repository.EventList.Clear();
            }

            if (caughtException != null || ExpectedException() != null)
            {
                if (caughtException != null && ExpectedException() != null)
                {
                    Assert.AreEqual(ExpectedException().GetType(), caughtException.GetType());
                }
                else
                {
                    Assert.Fail("There was an Expected Exception but none was thrown.");
                }
            }

            ValidateExpectedEvents(ExpectedEvents(), generatedEvents);
        }
示例#3
0
        public void RunTest(ICommand command)
        {
            Setup();

            var repository = new FakeEventRepository();

            repository.InitialEvents = Given();

            var queryDataStore = new FakeQueryDataStore();
            var queryService   = new QueryHandlerFactory(queryDataStore);

            var commandRepository = new Mock <ICommandRepository>();

            HandleEvents(repository.InitialEvents, queryDataStore);

            Exception caughtException       = null;
            var       commandHandlerFactory = new CommandHandlerFactory(repository, queryService, commandRepository.Object);

            try
            {
                commandHandlerFactory.ExecuteCommand(command);
            }
            catch (Exception e)
            {
                if (ExpectedException() == null)
                {
                    throw;
                }

                caughtException = e;
            }

            if (caughtException != null || ExpectedException() != null)
            {
                if (caughtException != null && ExpectedException() != null)
                {
                    Assert.AreEqual(ExpectedException().GetType(), caughtException.GetType());
                }
                else
                {
                    Assert.Fail("There was an Expected Exception but none was thrown.");
                }
            }

            ValidateExpectedEvents(ExpectedEvents(), repository.EventList);
        }
        public void RunTest(ICommand command)
        {
            Setup();

            var repository = new FakeEventRepository();
            repository.InitialEvents = Given();

            var queryDataStore = new FakeQueryDataStore();
            var queryService = new QueryHandler(queryDataStore);

            var commandRepository = new Mock<ICommandRepository>();

            HandleEvents(repository.InitialEvents, queryDataStore);
            
            Exception caughtException = null;
            var commandHandlerFactory = new CommandHandlerFactory(repository, queryService, commandRepository.Object);

            try
            {
                commandHandlerFactory.ExecuteCommand(command);
            }
            catch (Exception e)
            {
                if (ExpectedException() == null)
                {
                    throw;
                }

                caughtException = e;
            }

            if (caughtException != null || ExpectedException() != null)
            {
                if (caughtException != null && ExpectedException() != null)
                {
                    Assert.AreEqual(ExpectedException().GetType(), caughtException.GetType());
                }
                else
                {
                    Assert.Fail("There was an Expected Exception but none was thrown.");
                }
            }

            ValidateExpectedEvents(ExpectedEvents(), repository.EventList);
        }
        public void ShouldLogCommand()
        {
            var testCommand = new EnterGameResultsCommand();

            testCommand.GameDate  = DateTime.Now.AddDays(-2);
            testCommand.CommandId = Guid.NewGuid();
            testCommand.GameId    = Guid.NewGuid();
            testCommand.IPAddress = "12.34.56.78";
            testCommand.User      = "******";
            testCommand.Timestamp = DateTime.Now;

            var newPlayerA = new EnterGameResultsCommand.GamePlayer();

            newPlayerA.PlayerName = "Dylan Smith";
            newPlayerA.Placing    = 1;
            newPlayerA.Winnings   = 120;
            newPlayerA.PayIn      = 60;

            var newPlayerB = new EnterGameResultsCommand.GamePlayer();

            newPlayerB.PlayerName = "Homer Simpson";
            newPlayerB.Placing    = 2;
            newPlayerB.Winnings   = 0;
            newPlayerB.PayIn      = 60;

            var players = new List <EnterGameResultsCommand.GamePlayer>();

            players.Add(newPlayerA);
            players.Add(newPlayerB);

            testCommand.Players = players;

            var mockCommandRepository = new Mock <ICommandRepository>();

            var sut = new CommandHandlerFactory(
                new Mock <IEventRepository>().Object,
                new Mock <IQueryService>().Object,
                mockCommandRepository.Object);

            sut.ExecuteCommand(testCommand);

            mockCommandRepository.Verify(x => x.LogCommand(testCommand));
        }
        public void ShouldLogCommand()
        {
            var testCommand = new EnterGameResultsCommand();
            testCommand.GameDate = DateTime.Now.AddDays(-2);
            testCommand.CommandId = Guid.NewGuid();
            testCommand.GameId = Guid.NewGuid();
            testCommand.IPAddress = "12.34.56.78";
            testCommand.User = "******";
            testCommand.Timestamp = DateTime.Now;

            var newPlayerA = new EnterGameResultsCommand.GamePlayer();
            newPlayerA.PlayerName = "Dylan Smith";
            newPlayerA.Placing = 1;
            newPlayerA.Winnings = 120;
            newPlayerA.PayIn = 60;

            var newPlayerB = new EnterGameResultsCommand.GamePlayer();
            newPlayerB.PlayerName = "Homer Simpson";
            newPlayerB.Placing = 2;
            newPlayerB.Winnings = 0;
            newPlayerB.PayIn = 60;

            var players = new List<EnterGameResultsCommand.GamePlayer>();
            players.Add(newPlayerA);
            players.Add(newPlayerB);

            testCommand.Players = players;

            var mockCommandRepository = new Mock<ICommandRepository>();

            var sut = new CommandHandlerFactory(
                new Mock<IEventRepository>().Object,
                new Mock<IQueryService>().Object,
                mockCommandRepository.Object);

            sut.ExecuteCommand(testCommand);

            mockCommandRepository.Verify(x => x.LogCommand(testCommand));
        }
        public void ShouldLogFailedCommand()
        {
            var testCommand = new CreateGameCommand();

            testCommand.GameDate  = DateTime.Now.AddDays(-2);
            testCommand.CommandId = Guid.NewGuid();
            testCommand.GameId    = Guid.NewGuid();
            testCommand.IPAddress = "12.34.56.78";
            testCommand.Timestamp = DateTime.Now;

            var mockCommandRepository = new Mock <ICommandRepository>();
            var mockEventRepository   = new Mock <IEventRepository>();
            var mockQueryService      = new Mock <IQueryService>();

            mockQueryService.Setup(q => q.Execute(It.IsAny <GetGameCountByDateQuery>())).Returns(0);

            var sut = new CommandHandlerFactory(
                mockEventRepository.Object,
                mockQueryService.Object,
                mockCommandRepository.Object);

            var ex = new ArgumentException("foo");

            mockEventRepository.Setup(x => x.PublishEvents(It.IsAny <IAggregateRoot>(), testCommand)).Throws(ex);

            try
            {
                sut.ExecuteCommand(testCommand);
            }
            catch
            {
                // eat all exceptions
            }

            mockCommandRepository.Verify(x => x.LogCommand(testCommand));
            mockCommandRepository.Verify(x => x.LogFailedCommand(testCommand, ex));
        }
        public void ShouldLogCommand()
        {
            var testCommand = new CreateGameCommand();

            testCommand.GameDate  = DateTime.Now.AddDays(-2);
            testCommand.CommandId = Guid.NewGuid();
            testCommand.GameId    = Guid.NewGuid();
            testCommand.IPAddress = "12.34.56.78";
            testCommand.Timestamp = DateTime.Now;

            var mockCommandRepository = new Mock <ICommandRepository>();
            var mockQueryService      = new Mock <IQueryService>();

            mockQueryService.Setup(q => q.Execute(It.IsAny <GetGameCountByDateQuery>())).Returns(0);

            var sut = new CommandHandlerFactory(
                new Mock <IEventRepository>().Object,
                mockQueryService.Object,
                mockCommandRepository.Object);

            sut.ExecuteCommand(testCommand);

            mockCommandRepository.Verify(x => x.LogCommand(testCommand));
        }
        public void ShouldLogFailedCommand()
        {
            var testCommand = new EnterGameResultsCommand();
            testCommand.GameDate = DateTime.Now.AddDays(-2);
            testCommand.CommandId = Guid.NewGuid();
            testCommand.GameId = Guid.NewGuid();
            testCommand.IPAddress = "12.34.56.78";
            testCommand.User = "******";
            testCommand.Timestamp = DateTime.Now;

            var newPlayerA = new EnterGameResultsCommand.GamePlayer();
            newPlayerA.PlayerName = "Dylan Smith";
            newPlayerA.Placing = 1;
            newPlayerA.Winnings = 120;
            newPlayerA.PayIn = 60;

            var newPlayerB = new EnterGameResultsCommand.GamePlayer();
            newPlayerB.PlayerName = "Homer Simpson";
            newPlayerB.Placing = 2;
            newPlayerB.Winnings = 0;
            newPlayerB.PayIn = 60;

            var players = new List<EnterGameResultsCommand.GamePlayer>();
            players.Add(newPlayerA);
            players.Add(newPlayerB);

            testCommand.Players = players;

            var mockCommandRepository = new Mock<ICommandRepository>();
            var mockEventRepository = new Mock<IEventRepository>();
            var mockQueryService = new Mock<IQueryService>();

            var sut = new CommandHandlerFactory(
                mockEventRepository.Object,
                mockQueryService.Object,
                mockCommandRepository.Object);

            var ex = new ArgumentException("foo");
            mockEventRepository.Setup(x => x.PublishEvents(It.IsAny<IAggregateRoot>(), testCommand)).Throws(ex);

            try
            {
                sut.ExecuteCommand(testCommand);
            }
            catch
            {
                // eat all exceptions
            }

            mockCommandRepository.Verify(x => x.LogCommand(testCommand));
            mockCommandRepository.Verify(x => x.LogFailedCommand(testCommand, ex));
        }