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); } }
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")); } }
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")); } }
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); }