require 'rails_helper' include Warden::Test::Helpers Warden.test_mode! feature 'Play a hand', type: :feature do after(:each) do Warden.test_reset! end # Scenario: The first play must be the lowest dealt card # Given: A new game and I am the holder of the lowest card # When I play a hand containing the lowest card # Then I see a successful play message scenario 'first play contains lowest card' do # TODO: extract game setup to a factory game = FactoryGirl.create :game user1 = FactoryGirl.create :user user2 = FactoryGirl.create :user game.add_player_from_user user1 game.add_player_from_user user2 game.start login_as(game.current_player.user, scope: :user) visit game_path game # Click the lowest card checkbox @card_to_play = game.lowest_card check @card_to_play.to_s click_button 'Play Hand' expect(page).to have_content('Played ' + game.lowest_card.to_s) # create game with players # current_player plays hand containing lowest card # expect successful play message end scenario 'first play does not contain lowest card' do game = FactoryGirl.create :game user1 = FactoryGirl.create :user user2 = FactoryGirl.create :user game.add_player_from_user user1 game.add_player_from_user user2 game.start login_as(game.current_player.user, scope: :user) visit game_path game # Click the lowest card checkbox @card_to_play = game.current_player.player_cards.order(:value).last check @card_to_play.to_s click_button 'Play Hand' expect(page).to have_content "First hand must contain the lowest card: #{game.lowest_card.to_s}" # current_player plays hand not containing lowest card # expect unsuccessful play message hand MUST contain lowest card end # Scenario: Player can play a valid hand on their turn # Given I am the active player # When I play a valid hand # Then I see a successful play message scenario 'active player can play a valid hand' do # create game with players # current_player plays a valid hand # expect successful play message skip 'to be implemented' end # Scenario: Player can not play an invalid hand on their turn # Given I am the active player # When I play an invalid hand # Then I see an invalid hand message scenario 'active player can play a valid hand' do # create game with players # current_player plays an invalid hand # expect invalid hand message skip 'to be implemented' end # Scenario: Player can not play a hand when it is not their turn # Given I am not the active player # When I play a hand # Then I see an unsuccessful play message scenario 'inactive player can not play a hand' do # create game with players # not_current_player plays a valid hand # expect unsuccessful play message skip 'to be implemented' end end