public void DrawFromDeck_Fail_if_validation_of_PlayerCanDrawFromDeck_fails() { // Arrange var player1HandPile = _player1.GetHandPile(); _shitheadMoveValidator.PlayerCanDrawFromDeck(Arg.Any <Game>(), Arg.Any <Player>()).Returns("Cannot draw validation error"); // Act Assert.Empty(_deckPile.Cards); Assert.Empty(player1HandPile.Cards); var exception = Assert.Throws <DomainException>(() => _shitheadPileLogic.DrawFromDeck(_player1)); // Assert Assert.Equal("Cannot draw validation error", exception.Message); }
public void DrawFromDeck(Player player) { var game = player.Game; var canDrawValidation = _shitheadMoveValidator.PlayerCanDrawFromDeck(game, player); if (canDrawValidation != null) { throw new DomainException(DomainErrorCode.BadRequest, canDrawValidation); } var playerHandPile = player.GetHandPile(); var deckPile = game.GetDeckPile(); var deckCard = deckPile.Cards.FirstOrDefault(); if (deckCard == null) { throw new DomainException(DomainErrorCode.InconsistentData, string.Format(Resources.Deck_is_empty__cannot_draw_card_for_game__0_, game.Id)); } deckPile.Cards.Remove(deckCard); playerHandPile.Cards.Add(deckCard); }