public async Task Should_not_add_player_to_game_if_already_in() { var game = new GameBuilder() .FirstPlayerEinstein .CardBattle .Build(); await _repository.CreateGameAsync(game); // Act var fetchedGame = await _repository.AddPlayerToGameAsync(GameType.CardBattle, null, null, GameBuilder.Einstein); fetchedGame.Should().BeNull(); }
public async Task Should_get_game_by_id() { var game = new GameBuilder() .FirstPlayerEinstein .CardBattle .Build(); await _repository.CreateGameAsync(game); // Act var fetchedGame = await _repository.GetAsync <Game>(game.Id !); fetchedGame.Should().BeEquivalentTo(game, options => options.WithMongoDateTime()); }
public async Task Should_not_add_player_to_game_when_game_type_is_different() { var game = new GameBuilder() .FirstPlayerEinstein .TicTacToe .Build(); await _repository.CreateGameAsync(game); // Act var fetchedGame = await _repository.AddPlayerToGameAsync(GameType.CardBattle, null, null, GameBuilder.Eiffel); fetchedGame.Should().BeNull(); }
public async Task Should_status_change_to_ingame_when_not_yet_changed() { var game = new GameBuilder().Build(); game = await _repository.CreateGameAsync(game); // Act var updatedGame = await _repository.StartGameAsync(game.Id !, new int[0]); updatedGame.Should().NotBeNull(); updatedGame !.Status.Should().Be(GameStatus.InGame); updatedGame.Version.Should().Be(game.Version + 1); }
public async Task Should_not_add_player_to_game_when_status_is_not_waiting() { var game = new GameBuilder() .FirstPlayerEinstein .CardBattle .Finished .Build(); await _repository.CreateGameAsync(game); // Act var fetchedGame = await _repository.AddPlayerToGameAsync(GameType.CardBattle, null, null, GameBuilder.Eiffel); fetchedGame.Should().BeNull(); }
public async Task Should_not_add_player_to_game_when_game_duration_is_longer() { var game = new GameBuilder() .FirstPlayerEinstein .CardBattle .MaxDuration(10) .Build(); await _repository.CreateGameAsync(game); // Act var fetchedGame = await _repository.AddPlayerToGameAsync(GameType.CardBattle, null, 5, GameBuilder.Eiffel); fetchedGame.Should().BeNull(); }
public async Task Should_not_add_player_to_game_when_game_max_is_greather() { var game = new GameBuilder() .FirstPlayerEinstein .CardBattle .MinMaxPlayers(2, 4) .Build(); await _repository.CreateGameAsync(game); // Act var fetchedGame = await _repository.AddPlayerToGameAsync(GameType.CardBattle, 3, null, GameBuilder.Eiffel); fetchedGame.Should().BeNull(); }
public async Task Should_not_add_player_when_already_there() { var game = new GameBuilder() .TicTacToe .SecondPlayerEiffel .Build(); game = await _repository.CreateGameAsync(game); // Act var updatedGame = await _repository.AddPlayerToGameIfNotThereAsync(game.Id !, GameBuilder.Eiffel); updatedGame.Should().BeNull(); }
public async Task Should_remove_game() { var game = new GameBuilder() .FirstPlayerEinstein .CardBattle .Build(); await _repository.CreateGameAsync(game); // Act await _repository.RemoveAsync(game.Id !); var fetchedGame = await _repository.GetAsync <Game>(game.Id !); fetchedGame.Should().BeNull(); }
public async Task Should_not_add_player_when_game_status_is_not_waiting() { var game = new GameBuilder() .TicTacToe .SecondPlayerEiffel .Finished .Build(); game = await _repository.CreateGameAsync(game); // Act var updatedGame = await _repository.AddPlayerToGameIfNotThereAsync(game.Id !, GameBuilder.Einstein); updatedGame.Should().BeNull(); }
public async Task Should_create_game() { var builder = new GameBuilder() .TicTacToe .MinMaxPlayers(2, 4) .Open .FirstPlayerEinstein; var game = builder.Build(); // need to get another one since mongodb will alter it (to add id for example) // Act var createdGame = await _repository.CreateGameAsync(builder.Build()); createdGame.Should().BeEquivalentTo(game, options => options.Excluding(e => e.Id)); createdGame.Id.Should().NotBeNullOrWhiteSpace(); }
public async Task Should_count_be_two_when_already_in_two_games() { var game1 = new GameBuilder() .FirstPlayerEinstein .Build(); await _repository.CreateGameAsync(game1); var game2 = new GameBuilder() .FirstPlayerEinstein .Build(); await _repository.CreateGameAsync(game2); // Act var numberOfGames = await _repository.GetNumberOfGamesAsync(GameBuilder.Einstein.Id); numberOfGames.Should().Be(2); }
public async Task Should_players_play_order_change() { var game = new GameBuilder() .SecondPlayerEiffel .FirstPlayerEinstein .Build(); game = await _repository.CreateGameAsync(game); // Act var updatedGame = await _repository.StartGameAsync(game.Id !, new[] { 1, 0 }); updatedGame.Should().NotBeNull(); updatedGame !.Players[0].PlayOrder.Should().Be(1); updatedGame.Players[1].PlayOrder.Should().Be(0); updatedGame.Version.Should().Be(game.Version + 1); }
public async Task Should_add_player_to_game() { var game = new GameBuilder() .FirstPlayerEinstein .CardBattle .Build(); await _repository.CreateGameAsync(game); // Act var updatedGame = await _repository.AddPlayerToGameAsync(GameType.CardBattle, null, null, GameBuilder.Eiffel); updatedGame.Should().NotBeNull(); updatedGame !.PlayersCount.Should().Be(2); updatedGame.Players.Should().BeEquivalentTo(new[] { GameBuilder.Einstein, GameBuilder.Eiffel }, options => options.WithMongoDateTime()); updatedGame.Version.Should().Be(game.Version + 1); }
public async Task Should_add_player_when_not_there() { var game = new GameBuilder() .TicTacToe .FirstPlayerEinstein .Build(); game = await _repository.CreateGameAsync(game); // Act var updatedGame = await _repository.AddPlayerToGameIfNotThereAsync(game.Id !, GameBuilder.Eiffel); updatedGame.Should().NotBeNull(); updatedGame !.PlayersCount.Should().Be(2); updatedGame.Players.Should().BeEquivalentTo(new[] { GameBuilder.Einstein, GameBuilder.Eiffel }, options => options.WithMongoDateTime()); }
public async Task Should_update_player_game_player_when_already_there() { var gameBuilder = new GameBuilder() .FirstPlayerEinstein .TicTacToe .RandomId; var playerBuilder = new PlayerBuilder() .Einstein .AddGame(gameBuilder); var player = playerBuilder.Build(); await _repository.CreatePlayerIfNotExistingAsync(player); gameBuilder.TimedOut.StartedEndedAt(DateTime.UtcNow.AddDays(1), DateTime.UtcNow.AddDays(3)); var updatedGame = Player.Game.From(player.Id, gameBuilder); // Act await _repository.AddOrUpdatePlayerGameAsync(player.Id, updatedGame); var games = await _repository.GetPlayerGamesAsync(player.Id); games.Single().Should().BeEquivalentTo(updatedGame, options => options.WithMongoDateTime()); }
public PlayerBuilder AddGame(GameBuilder builder) { return(AddGame(builder.Build())); }