//TODO: public static void AddUser(int userId) { var members = _memberRepository.ReadLobbyAll(); LobbyRepository lobby = new LobbyRepository(); if (members.Count == 0) { _memberRepository.Create(1, userId); } else { var member = members.Last(); if (member.IsLobbyActive == false) { if (EmptyPlaceCount(member.UserId) == 0) { _memberRepository.Create(member.LobbyId + 1, userId); } else { _memberRepository.Create(member.LobbyId, userId); } } else { _memberRepository.Create(member.LobbyId + 1, userId); } } }
public void Create_CallsRepositoryAdd() { // Register a lobby with the mock. var lobby = new Lobby() { Bets = new List <Bet>() }; LobbyRepository.Get(Arg.Any <long>()).Returns(lobby); // Assert that we hit the repository. BetRepository.DidNotReceive().Add(Arg.Any <Bet>()); MyWork.DidNotReceive().Complete(); var viewModel = new CreateBetViewModel() { BuyIn = "0", Description = "Description", LobbyID = 0, StartDate = DateTime.Now.ToLongDateString(), StopDate = DateTime.Now.ToLongDateString(), Title = "Name" }; uut.Create(viewModel); Assert.That(uut.ModelState.IsValid); // Assert that we hit the repository. BetRepository.Received(1).Add(Arg.Any <Bet>()); MyWork.Received(1).Complete(); }
public UnitOfWork(Context context) { _context = context; Bet = new BetRepository(_context); Lobby = new LobbyRepository(_context); User = new UserRepository(_context); Outcome = new OutcomeRepository(_context); }
public void Show_CallsRepositoryGet() { // Assert that we hit the repository. LobbyRepository.DidNotReceive().Get(Arg.Any <long>()); uut.Show(0); // Assert that we hit the repository. LobbyRepository.Received(1).Get(Arg.Any <long>()); }
public ActionResult <Lobby> Get([FromRoute] string id) { if (!Guid.TryParse(id, out var guid)) { return(FormattedBadRequest("Invalid Player ID")); } else { return(LobbyRepository.GetLobby(guid)); } }
public ActionResult <Lobby> Put([FromBody] PutLobbyRequestBody body) { if (body == null) { return(FormattedBadRequest("No Body received!")); } Player player = null; if (Guid.TryParse(body?.PlayerId, out var guid)) { //return FormattedBadRequest("Invalid Player ID"); player = PlayerRepository.GetPlayer(guid); } return(LobbyRepository.CreateNewLobby(player, body.LobbySettings)); }
public void AcceptInvitationToLobby_LobbyInInvitedToLobbies_ProperFunctionsCalled() { MyWork.DidNotReceive().Complete(); var lobby = Substitute.For <Lobby>(); var user = new User(); lobby.DidNotReceive().AcceptLobby(Arg.Any <User>()); LobbyRepository.Get(Arg.Any <long>()).Returns(lobby); MyWork.User.Get(Arg.Any <string>()).Returns(user); uut.Accept(1); lobby.Received(1).AcceptLobby(Arg.Any <User>()); MyWork.Received(1).Complete(); }
public void ReadTest() { int lobbyId = 1; InstanceGenerator.Cleaner(lobbyId); var lobby = InstanceGenerator.GenerateTestingLobby(lobbyId); LobbyRepository lobbyRepository = new LobbyRepository(); lobbyRepository.Create(lobby); var newLobby = lobbyRepository.Read(lobbyId); Assert.AreEqual(lobby.GameId, newLobby.GameId); Assert.AreEqual(lobby.Maze[0, 3], newLobby.Maze[0, 3]); Assert.AreEqual(lobby.Players.Count, newLobby.Players.Count); }
public void Create_CallsRepositoryAdd() { // Assert that we hit the repository. LobbyRepository.DidNotReceive().Add(Arg.Any <Lobby>()); MyWork.DidNotReceive().Complete(); var viewModel = new CreateLobbyViewModel() { Description = "Description", Name = "Name" }; uut.Create(viewModel); // Assert that we hit the repository. LobbyRepository.Received(1).Add(Arg.Any <Lobby>()); MyWork.Received(1).Complete(); }
public ActionResult <Lobby> Join([FromBody] JoinLobbyRequestBody body) { if (body == null) { return(FormattedBadRequest("No Body received!")); } if (!Guid.TryParse(body.PlayerId, out var playerId)) { return(FormattedBadRequest("Invalid Player ID")); } if (!Guid.TryParse(body.LobbyId, out var lobbyId)) { return(FormattedBadRequest("Invalid Lobby ID")); } var player = PlayerRepository.GetPlayer(playerId); return(LobbyRepository.JoinLobby(player, lobbyId)); }
public void Setup() { Factory = Substitute.For <IFactory>(); MyWork = Substitute.For <IUnitOfWork>(); LobbyRepository = Substitute.For <ILobbyRepository>(); _userContext = Substitute.For <IUserContext>(); Factory.GetUOF().Returns(MyWork); MyWork.Lobby.Returns(LobbyRepository); // Setup the mock. _lobby1 = new Lobby() { Description = "", Name = "", Bets = new List <Bet>(), LobbyId = 0, InvitedList = new List <User>(), MemberList = new List <User>() }; _lobby2 = new Lobby() { Description = "", Name = "", Bets = new List <Bet>(), LobbyId = 1, InvitedList = new List <User>(), MemberList = new List <User>() }; var lobbies = new List <Lobby>() { _lobby1, _lobby2 }; _numberOfLobies = lobbies.Count; LobbyRepository.GetAll().Returns(lobbies); LobbyRepository.Get(0).Returns(_lobby1); // Create the controller. uut = new LobbyController(Factory, _userContext); uut.ControllerContext = new ControllerContext(); }
public void Show_WithInputId_CallsCorrectGet() { // Register a bet with the mock. var lobby = new Lobby(); LobbyRepository.Get(Arg.Any <long>()).Returns(lobby); // Setup capture of the argument. long key = 0; LobbyRepository.Get(Arg.Do <long>(i => key = i)); long passedKey = 100; // Act. uut.Show(passedKey); // Assert that we passed the correct id. Assert.That(key, Is.EqualTo(passedKey)); }
public void Create_InputFromViewModel_StoredInRepository() { // Create the viewmodel. var viewModel = new CreateLobbyViewModel() { Description = "Description", Name = "Name" }; // Setup storing retrieved calls. Lobby lobby = new Lobby(); LobbyRepository.Add(Arg.Do <Lobby>(l => lobby = l)); // Perform the action. uut.Create(viewModel); // Assert that the object passed to the repository, matches our data. Assert.That(lobby.Description, Is.EqualTo(viewModel.Description)); Assert.That(lobby.Name, Is.EqualTo(viewModel.Name)); // TODO: Extend. }
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); }
public LobbyController(LobbyRepository lobbyRepository, PlayerRepository playerRepository) { LobbyRepository = lobbyRepository; PlayerRepository = playerRepository; }
public List <MessageConfig> StateMachine(CharacterState state, string command, int playerId) { //TODO: Вынести сюда создание репозиториев switch (state) { case CharacterState.ChangeName: return(BotService.TryChangeName(command, playerId)); case CharacterState.ChangeGameMode: switch (command) { case "/game": return(BotService.FindGameCommand(playerId)); case "/tutorial": var character = _characterRepository.Read(playerId); LobbyRepository lobbyRepository = new LobbyRepository(); MemberRepository memberRepository = new MemberRepository(); memberRepository.Create(0, playerId); var lobby = lobbyRepository.Read(0); lobby.Players.Add(new Player { Health = 3, HeroName = character.CharacterName, Rotate = Direction.North, TelegramUserId = playerId, UserCoordinate = new Coordinate(3, 3) }); lobbyRepository.Update(lobby); character.State = CharacterState.Tutorial; _characterRepository.Update(character); return(new List <MessageConfig> { new MessageConfig() { Answer = "Обучение", PlayerId = playerId } }); default: return(new List <MessageConfig> { new MessageConfig() { Answer = "неверная команда", PlayerId = playerId } }); } case CharacterState.Tutorial: switch (command) { case "Вверх": return(TutorialService.MoveCommand(playerId, Direction.North)); case "Вниз": return(TutorialService.MoveCommand(playerId, Direction.South)); case "Вправо": return(TutorialService.MoveCommand(playerId, Direction.East)); case "Влево": return(TutorialService.MoveCommand(playerId, Direction.West)); case "Взрыв стены": var inlineKeyboard = KeybordConfiguration.ChooseDirectionKeyboard(); BotClient.SendTextMessageAsync(playerId, "Выбирай направление", replyMarkup: inlineKeyboard); BotClient.OnCallbackQuery += BotClient_OnCallbackQueryBomb; return(null); case "/skip": var character = _characterRepository.Read(playerId); LobbyRepository lobbyRepository = new LobbyRepository(); MemberRepository memberRepository = new MemberRepository(); memberRepository.DeleteOne(playerId); var lobby = lobbyRepository.Read(0); lobby.Players.Remove(lobby.Players.Find(e => e.TelegramUserId == playerId)); lobbyRepository.Update(lobby); character.State = CharacterState.ChangeGameMode; _characterRepository.Update(character); return(new List <MessageConfig> { new MessageConfig() { Answer = "Обучение пропущено", PlayerId = playerId } }); default: return(new List <MessageConfig> { new MessageConfig() { Answer = "Неверная команда", PlayerId = playerId } }); } case CharacterState.FindGame: switch (command) { case "/help": return(new List <MessageConfig> { new MessageConfig() { Answer = Answers.Help.RandomAnswer(), PlayerId = playerId } }); case "/stop": _characterRepository.Read(playerId); MemberRepository repo = new MemberRepository(); var character = _characterRepository.Read(playerId); character.State = CharacterState.ChangeGameMode; _characterRepository.Update(character); repo.DeleteOne(playerId); return(new List <MessageConfig> { new MessageConfig() { Answer = "Вы удалены из очереди", PlayerId = playerId } }); default: return(new List <MessageConfig> { new MessageConfig() { Answer = "Неверная команда", PlayerId = playerId } }); } case CharacterState.InGame: switch (command) { case "Вперед": return(BotService.MoveCommand(playerId, Direction.North)); case "Назад": return(BotService.MoveCommand(playerId, Direction.South)); case "Вправо": return(BotService.MoveCommand(playerId, Direction.East)); case "Влево": return(BotService.MoveCommand(playerId, Direction.West)); case "Удар кинжалом": return(BotService.StabCommand(playerId)); case "Пропуск хода": return(BotService.SkipTurn(playerId)); case "Выстрел": { var inlineKeyboard = KeybordConfiguration.ChooseDirectionKeyboard(); BotClient.SendTextMessageAsync(playerId, "Выбирай направление", replyMarkup: inlineKeyboard); BotClient.OnCallbackQuery += BotClient_OnCallbackQueryShoot; return(null); } case "Взрыв стены": { var inlineKeyboard = KeybordConfiguration.ChooseDirectionKeyboard(); BotClient.SendTextMessageAsync(playerId, "Выбирай направление", replyMarkup: inlineKeyboard); BotClient.OnCallbackQuery += BotClient_OnCallbackQueryBomb; return(null); } case "/afk": return(BotService.AfkCommand(playerId)); case "/leave": return(BotService.TryLeaveCommand(playerId)); } return(new List <MessageConfig> { new MessageConfig() { Answer = Answers.UndefinedCommand.RandomAnswer(), PlayerId = playerId } }); case CharacterState.NewCharacter: if (command == "/start") { if (_characterRepository.Read(playerId) == null) { _characterRepository.Create(playerId); return(new List <MessageConfig> { new MessageConfig() { Answer = "Напишите имя персонажа", PlayerId = playerId } }); } } return(new List <MessageConfig> { new MessageConfig() { Answer = "Неверная команда", PlayerId = playerId } }); case CharacterState.AcceptLeave: if (command == "Подтверждаю") { return(BotService.LeaveCommand(playerId)); } else { return(new List <MessageConfig> { new MessageConfig { Answer = "Не подтверждено", PlayerId = playerId } }); } case CharacterState.Ban: //TODO:REBAN return(new List <MessageConfig> { new MessageConfig() { Answer = "В бане", PlayerId = playerId } }); default: throw new ArgumentOutOfRangeException(nameof(state), state, null); } throw new ArgumentOutOfRangeException(nameof(state), state, null); }