Exemplo n.º 1
0
        public void SuccessWhenUserIsNotInTheLobby()
        {
            //arrange
            var options = Utils.GetDbOptions("AddUserShould_SuccessWhenUserIsNotInTheLobby");

            using (var context = new ApplicationDbContext(options))
            {
                context.Lobbies.Add(new Lobby()
                {
                    ID = 5
                });
                context.Users.Add(new User()
                {
                    Id = "test_user"
                });
                context.SaveChanges();
            }
            //act
            using (var context = new ApplicationDbContext(options))
            {
                var lobbyInvitationSenderService = new Mock <ILobbyInvitationSenderService>();
                var service = new LobbyService(context, null, null);
                service.AddUser(5, "test_user");
            }
            //assert
            using (var context = new ApplicationDbContext(options))
            {
                var participation = context.UserParticipationInLobbies.Find(new object[] { 5, "test_user" });
                Assert.NotNull(participation);
                Assert.True(context.Lobbies.Find(5).UserParticipations.Contains(participation));
                Assert.Equal(context.Users.Find("test_user").LobbyParticipation, participation);
            }
        }
Exemplo n.º 2
0
        public void ThrowExceptionWhenUserIsAlreadyInTheLobby()
        {
            //arrange
            var options = Utils.GetDbOptions("AddUserShould_ThrowExceptionWhenUserIsAlreadyInTheLobby");

            using (var context = new ApplicationDbContext(options))
            {
                context.Lobbies.Add(new Lobby()
                {
                    ID = 5
                });
                context.Users.Add(new User()
                {
                    Id = "test_user"
                });
                context.UserParticipationInLobbies.Add(new UserParticipationInLobby()
                {
                    UserID  = "test_user",
                    LobbyID = 5
                });
                context.SaveChanges();
            }
            //act & assert
            using (var context = new ApplicationDbContext(options))
            {
                var lobbyInvitationSenderService = new Mock <ILobbyInvitationSenderService>();
                var service = new LobbyService(context, null, null);
                Assert.Throws <InvalidOperationException>(() => service.AddUser(5, "test_user"));
            }
        }
Exemplo n.º 3
0
        public void ThrowExceptionGivenUserIdOutOfRange()
        {
            //arrange
            var options = Utils.GetDbOptions("AddUserShould_ThrowExceptionGivenUserIdOutOfRange");

            using (var context = new ApplicationDbContext(options))
            {
                context.Lobbies.Add(new Lobby()
                {
                    ID = 5
                });
                context.SaveChanges();
            }
            //act & assert
            using (var context = new ApplicationDbContext(options))
            {
                var service = new LobbyService(context, null, null);
                Assert.Throws <ArgumentOutOfRangeException>(() => service.AddUser(5, "unknown_user"));
            }
        }
Exemplo n.º 4
0
        public static List <MessageConfig> FindGameCommand(int playerId)
        {
            var members             = new MemberRepository();
            var characterRepository = new CharacterRepository();
            var lobyRepository      = new LobbyRepository();
            var msg = new List <MessageConfig>();

            if (LobbyService.CheckLobby(playerId))
            {
                msg.Add(new MessageConfig
                {
                    Answer   = "Вы уже находитесь в лобби",
                    PlayerId = playerId
                });
                return(msg);
            }
            //TODO: isLobbyactive
            LobbyService.AddUser(playerId);
            if (LobbyService.EmptyPlaceCount(playerId) != 0)
            {
                msg.Add(new MessageConfig
                {
                    Answer = $"Вы добавлены в лобби, осталось игроков для начала игры: *{LobbyService.EmptyPlaceCount(playerId)}* " +
                             $"\n /stop - для остановки поиска лобби" +
                             $"\n /help - попросить совет",
                    PlayerId = playerId
                });
                var character = characterRepository.Read(playerId);
                character.State = CharacterState.FindGame;
                CharacterRepository.Update(character);
                return(msg);
            }
            LobbyService.StartNewLobby(playerId);
            var memberlist = members.ReadMemberList(
                members.ReadLobbyId(playerId));
            string        s          = "";
            List <string> Names      = new List <string>();
            var           characters = CharacterRepository.ReadAll();

            foreach (var member in memberlist)
            {
                s += "*" + (characters.Find(e => e.TelegramUserId == member.UserId).CharacterName) + "*" + ", ";
            }

            s  = s.Substring(0, s.Length - 2);
            s += ".";
            ;            foreach (var item in memberlist)
            {
                msg.Add(new MessageConfig
                {
                    Answer = "Игра начата. Игроки: " + s + "" +
                             "\n/leave - испортить другим игру" +
                             "\n/afk - если кто-то долго не ходит \n",
                    PlayerId = item.UserId,
                });
                item.IsLobbyActive = true;
                members.Update(item);
            }
            foreach (var item in memberlist.Select(e => e.UserId))
            {
                var character = characterRepository.Read(item);
                character.State = CharacterState.InGame;
                characterRepository.Update(character);
            }

            msg.Find(e => e.PlayerId == members.ReadMemberList(members.ReadLobbyId(playerId)).First().UserId).Answer += " Ваш ход";
            msg.Find(e => e.PlayerId == members.ReadMemberList(members.ReadLobbyId(playerId)).First().UserId).KeyBoardId
                = KeyboardType.Move;

            return(msg);
        }