예제 #1
0
        public void JoinGame()
        {
            DbConnection connection = DbConnectionFactory.CreateTransient();

            using (var gwintContext = new GwintContext(connection))
            {
                gwintContext.Cards.AddRange(TestCardProvider.GetDefaultCards());
                gwintContext.Users.Add(new User
                {
                    Id = 1
                });
                var user2 = new User
                {
                    Id = 2
                };
                gwintContext.Users.Add(user2);
                gwintContext.Games.Add(new Game
                {
                    Id      = 1,
                    State   = new LobbyState(),
                    Players = new List <Player>
                    {
                        new Player
                        {
                            User = user2
                        }
                    }
                });
                gwintContext.SaveChanges();
            }
            var scopeMock = new Mock <ILifetimeScope>();

            scopeMock.SetupResolve <ILifetimeScope, IGwintContext>(new GwintContext(connection));
            var userConnectionMapMock = new Mock <IUserConnectionMap>();

            userConnectionMapMock.SetupMapping();
            scopeMock.SetupResolve <ILifetimeScope, IUserConnectionMap>(userConnectionMapMock.Object);
            var rootScopeMock = new Mock <ILifetimeScope>();

            rootScopeMock.Setup(s => s.BeginLifetimeScope()).Returns(scopeMock.Object);
            var clientsMock = new Mock <IHubCallerConnectionContext <dynamic> >();

            clientsMock.SetupClients();

            int     gameId               = 1;
            var     userName             = "******";
            var     userId               = "1";
            var     connectionID         = "13245";
            var     hubCallerContextMock = CreateHubCallerContextMock(userName, userId, connectionID);
            GameHub hub = new GameHub(rootScopeMock.Object)
            {
                Context = hubCallerContextMock.Object,
                Clients = clientsMock.Object
            };

            var result = hub.JoinGame(gameId);

            Assert.Null(result.Error);
            Assert.NotNull(result.Data);
        }
예제 #2
0
        public void Setup()
        {
            // TODO: Test if this prevents the first test from running really long
            DbConnection connection = DbConnectionFactory.CreateTransient();

            using (var context = new GwintContext(connection))
            {
                context.Cards.Add(new Card());
                context.SaveChanges();
            }
        }
예제 #3
0
        public void BrowseGames()
        {
            DbConnection connection = DbConnectionFactory.CreateTransient();
            var          game       = new Game
            {
                Id       = 1,
                IsActive = true,
                State    = new LobbyState(),
                Players  =
                {
                    new Player()
                }
            };

            using (var gwintContext = new GwintContext(connection))
            {
                gwintContext.Games.Add(game);
                gwintContext.SaveChanges();
            }

            var scopeMock = new Mock <ILifetimeScope>();

            scopeMock.SetupResolve <ILifetimeScope, IGwintContext>(new GwintContext(connection));
            var userConnectionMapMock = new Mock <IUserConnectionMap>();

            userConnectionMapMock.SetupMapping();
            scopeMock.SetupResolve <ILifetimeScope, IUserConnectionMap>(userConnectionMapMock.Object);
            var rootScopeMock = new Mock <ILifetimeScope>();

            rootScopeMock.Setup(s => s.BeginLifetimeScope()).Returns(scopeMock.Object);
            var clientsMock = new Mock <IHubCallerConnectionContext <dynamic> >();

            clientsMock.SetupClients();

            var userName             = "******";
            var userId               = "1";
            var connectionID         = "13245";
            var hubCallerContextMock = CreateHubCallerContextMock(userName, userId, connectionID);

            GameHub hub = new GameHub(rootScopeMock.Object)
            {
                Context = hubCallerContextMock.Object,
                Clients = clientsMock.Object
            };

            var result = hub.BrowseGames();

            Assert.Null(result.Error);
            var gameBrowseDtos = result.Data;

            Assert.NotNull(gameBrowseDtos);
            Assert.Equal(1, gameBrowseDtos.Count);
            Assert.Contains(gameBrowseDtos, g => g.Id == game.Id && g.State == game.State.Name && g.PlayerCount == game.Players.Count);
        }
예제 #4
0
        public void RecieveClientCommand()
        {
            DbConnection connection = DbConnectionFactory.CreateTransient();
            long         nextCardId = 1;

            var createNewCards = new Func <int, int, ICollection <DeckCard> >((deckId, count) =>
            {
                var cards = new List <DeckCard>();
                for (int i = 0; i < count; i++)
                {
                    cards.Add(new DeckCard
                    {
                        //DeckId = deckId,
                        Card = new Card
                        {
                            Id = nextCardId++,
                        }
                    });
                }
                return(cards);
            });

            using (var gwintContext = new GwintContext(connection))
            {
                var user1 = new User
                {
                    Id = 1
                };
                var user2 = new User
                {
                    Id = 2
                };
                //gwintContext.Cards.AddRange(TestCardProvider.GetDefaultCards());
                gwintContext.Users.Add(user1);
                gwintContext.Users.Add(user2);
                var player1BattleKingCard = createNewCards(1, 1).Single().Card;
                var player2BattleKingCard = createNewCards(2, 1).Single().Card;
                var player1DeckCards      = createNewCards(1, Constants.MinDeckCardCount);
                var player2DeckCards      = createNewCards(2, Constants.MinDeckCardCount);

                gwintContext.Cards.Add(player1BattleKingCard);
                gwintContext.Cards.Add(player2BattleKingCard);
                gwintContext.Cards.AddRange(player1DeckCards.Select(c => c.Card));
                gwintContext.Cards.AddRange(player2DeckCards.Select(c => c.Card));

                gwintContext.Games.Add(new Game
                {
                    Id       = 1,
                    IsActive = true,
                    State    = new LobbyState(),
                    Players  = new List <Player>
                    {
                        new Player
                        {
                            Id      = 1,
                            User    = user1,
                            IsOwner = true,
                            Deck    = new Deck
                            {
                                Id             = 1,
                                BattleKingCard = player1BattleKingCard.ToDeckCard(),
                                Cards          = player1DeckCards
                            }
                        },
                        new Player
                        {
                            Id   = 2,
                            User = user2,
                            Deck = new Deck
                            {
                                Id             = 2,
                                BattleKingCard = player2BattleKingCard.ToDeckCard(),
                                Cards          = player2DeckCards
                            }
                        }
                    }
                });

                gwintContext.SaveChanges();
            }
            var scopeMock = new Mock <ILifetimeScope>();

            scopeMock.SetupResolve <ILifetimeScope, IGwintContext>(new GwintContext(connection));
            var userConnectionMapMock = new Mock <IUserConnectionMap>();

            userConnectionMapMock.SetupMapping();
            scopeMock.SetupResolve <ILifetimeScope, IUserConnectionMap>(userConnectionMapMock.Object);
            var rootScopeMock = new Mock <ILifetimeScope>();

            rootScopeMock.Setup(s => s.BeginLifetimeScope()).Returns(scopeMock.Object);
            var clientsMock = new Mock <IHubCallerConnectionContext <dynamic> >();

            clientsMock.SetupClients();

            var     userName             = "******";
            var     userId               = "1";
            var     connectionID         = "13245";
            var     hubCallerContextMock = CreateHubCallerContextMock(userName, userId, connectionID);
            GameHub hub = new GameHub(rootScopeMock.Object)
            {
                Context = hubCallerContextMock.Object,
                Clients = clientsMock.Object
            };
            var commandDto = new CommandDto();

            commandDto.Type = CommandType.StartGame;

            var result = hub.RecieveClientCommand(commandDto);

            Assert.Null(result.Error);
        }
예제 #5
0
        public void GetActiveGameWithInactiveGame()
        {
            DbConnection connection = DbConnectionFactory.CreateTransient();
            var          game       = new Game
            {
                Id       = 1,
                IsActive = false,
                Players  =
                {
                    new Player
                    {
                        User = new User
                        {
                            Id = 1
                        }
                    },
                    new Player
                    {
                        User = new User
                        {
                            Id = 2
                        }
                    }
                }
            };

            using (var gwintContext = new GwintContext(connection))
            {
                gwintContext.Games.Add(game);
                gwintContext.SaveChanges();
            }

            var scopeMock = new Mock <ILifetimeScope>();

            scopeMock.SetupResolve <ILifetimeScope, IGwintContext>(new GwintContext(connection));
            var userConnectionMapMock = new Mock <IUserConnectionMap>();

            userConnectionMapMock.SetupMapping();
            scopeMock.SetupResolve <ILifetimeScope, IUserConnectionMap>(userConnectionMapMock.Object);
            var rootScopeMock = new Mock <ILifetimeScope>();

            rootScopeMock.Setup(s => s.BeginLifetimeScope()).Returns(scopeMock.Object);
            var clientsMock = new Mock <IHubCallerConnectionContext <dynamic> >();

            clientsMock.SetupClients();

            var     userName             = "******";
            var     userId               = "1";
            var     connectionID         = "13245";
            var     hubCallerContextMock = CreateHubCallerContextMock(userName, userId, connectionID);
            GameHub hub = new GameHub(rootScopeMock.Object)
            {
                Context = hubCallerContextMock.Object,
                Clients = clientsMock.Object
            };

            var result = hub.GetActiveGame();

            Assert.NotNull(result.Error);
            Assert.Null(result.Data);
        }
예제 #6
0
        public void GetActiveGame()
        {
            DbConnection connection = DbConnectionFactory.CreateTransient();
            var          game       = new Game
            {
                Id       = 1,
                IsActive = true,
                State    = new LobbyState(),
                Players  =
                {
                    new Player
                    {
                        User = new User
                        {
                            Id = 1
                        }
                    },
                    new Player
                    {
                        User = new User
                        {
                            Id = 2
                        }
                    }
                }
            };

            using (var gwintContext = new GwintContext(connection))
            {
                gwintContext.Games.Add(game);
                gwintContext.SaveChanges();
            }

            var scopeMock = new Mock <ILifetimeScope>();

            scopeMock.SetupResolve <ILifetimeScope, IGwintContext>(new GwintContext(connection));
            var userConnectionMapMock = new Mock <IUserConnectionMap>();

            userConnectionMapMock.SetupMapping();
            scopeMock.SetupResolve <ILifetimeScope, IUserConnectionMap>(userConnectionMapMock.Object);
            var rootScopeMock = new Mock <ILifetimeScope>();

            rootScopeMock.Setup(s => s.BeginLifetimeScope()).Returns(scopeMock.Object);
            var clientsMock = new Mock <IHubCallerConnectionContext <dynamic> >();

            clientsMock.SetupClients();

            var     userName             = "******";
            var     userId               = "1";
            var     connectionID         = "13245";
            var     hubCallerContextMock = CreateHubCallerContextMock(userName, userId, connectionID);
            GameHub hub = new GameHub(rootScopeMock.Object)
            {
                Context = hubCallerContextMock.Object,
                Clients = clientsMock.Object
            };

            var result = hub.GetActiveGame();

            Assert.Null(result.Error);
            var gameDto = result.Data;

            Assert.Equal(game.Id, gameDto.Id);
            Assert.Equal(game.State.Name, gameDto.State);
            var playerDtos = gameDto.Players;

            Assert.Equal(2, playerDtos.Count);
            Assert.Contains(playerDtos, p => p.Key == Constants.PlayerKeySelf && p.Value.Id == 1);
            Assert.Contains(playerDtos, p => p.Key == Constants.PlayerKeyOpponent && p.Value.Id == 2);
        }