示例#1
0
        public void LeaveGameQueueTest()
        {
            var testUserId    = Guid.NewGuid().ToString();
            var testGameQueue = new GameQueue
            {
                Id    = Guid.NewGuid(),
                Users = new List <GameUser>
                {
                    new GameUser {
                        UserId = Guid.NewGuid().ToString()
                    },
                    new GameUser {
                        UserId = testUserId
                    },
                    new GameUser {
                        UserId = Guid.NewGuid().ToString()
                    }
                }
            };

            var gameRepository = new Mock <IGameRepository>();

            gameRepository.Setup(m => m.GetGame(It.Is <Guid>(g => g == testGameQueue.Id)))
            .Returns((Game)null)
            .Verifiable();
            gameRepository.Setup(m => m.GetGameQueue(It.Is <Guid>(g => g == testGameQueue.Id)))
            .Returns(testGameQueue)
            .Verifiable();

            gameRepository.Setup(m => m.AddOrUpdateGameQueue(It.Is <GameQueue>(g => g.Id == testGameQueue.Id && g.Users.Count == 2 && !g.Users.Any(u => u.UserId == testUserId))))
            .Verifiable();

            var userRepository = new Mock <IUserRepository>();

            userRepository.Setup(m => m.AddOrUpdateUserSession(It.Is <UserSession>(s => s.UserId == testUserId && s.ActiveGameQueueId == Guid.Empty)))
            .Verifiable();

            var command = new LeaveGameCommand(userRepository.Object, gameRepository.Object);
            var context = new Dictionary <string, object>
            {
                { "gameId", testGameQueue.Id },
                { "userId", testUserId }
            };

            command.Do(context);

            gameRepository.VerifyAll();
            userRepository.VerifyAll();
        }
示例#2
0
        public void ShouldntLeaveGameFailIfGameDoesntExist()
        {
            // Arrange: We create a mock gameRepository that doesn't have any games (returns null for all get games)
            //          We create the mock user repository
            //          We create the command and the context
            var gameRepository = new Mock <IGameRepository>();

            gameRepository.Setup(m => m.GetGame(It.IsAny <Guid>()))
            .Returns((Game)null);
            var userRepository = new Mock <IUserRepository>();
            var command        = new LeaveGameCommand(userRepository.Object, gameRepository.Object);
            var context        = new Dictionary <string, object>
            {
                { "gameId", Guid.NewGuid() },
                { "userId", "johnny" }
            };

            // Act: We execute the command the game won't exist, but the command shouldn't fail
            command.Do(context);

            // Asssert: No exception should be thrown
        }