Fix card labels
This commit is contained in:
parent
91b33a8c63
commit
1e0eabcef6
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,6 +9,7 @@
|
|||||||
# Corrections? Improvements? Create a GitHub issue:
|
# Corrections? Improvements? Create a GitHub issue:
|
||||||
# http://github.com/RailsApps/rails-composer/issues
|
# http://github.com/RailsApps/rails-composer/issues
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
/spec/reports/
|
||||||
|
|
||||||
# ctags
|
# ctags
|
||||||
tags
|
tags
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
sit_seat_path(seat)
|
sit_seat_path(seat)
|
||||||
|
|
||||||
- if seat.player
|
- if seat.player
|
||||||
.player{class: @game.controlling_player == seat.player ? "taking-turn" : "",
|
.player{id: "player-#{seat.player.id}", class: @game.controlling_player == seat.player ? "taking-turn" : "",
|
||||||
data: {soft_token: seat.player.soft_token} }
|
data: {soft_token: seat.player.soft_token} }
|
||||||
.user-name= seat.player.display_name
|
.user-name= seat.player.display_name
|
||||||
- if @game.started?
|
- if @game.started?
|
||||||
@ -31,7 +31,7 @@
|
|||||||
= check_box_tag 'player_card_ids[]',
|
= check_box_tag 'player_card_ids[]',
|
||||||
card.id,
|
card.id,
|
||||||
false,
|
false,
|
||||||
data: {value: card.id, card_name: card.rank.gsub('10','J') .gsub('12','Q') .gsub('13','K') .gsub('14','A') .gsub('15','2') + ' ' + card.suit}
|
data: {value: card.id, card_name: card.rank.gsub('11','J') .gsub('12','Q') .gsub('13','K') .gsub('14','A') .gsub('15','2') + ' ' + card.suit}
|
||||||
|
|
||||||
-# %input{form: "player_controls_" + card.player_id.to_s,
|
-# %input{form: "player_controls_" + card.player_id.to_s,
|
||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
|
|||||||
@ -27,8 +27,8 @@ feature 'Play now', :devise, js: true do
|
|||||||
|
|
||||||
context 'visitor joins an existing game' do
|
context 'visitor joins an existing game' do
|
||||||
before do
|
before do
|
||||||
FactoryGirl.create :game
|
FactoryGirl.create :table
|
||||||
@game = Game.last
|
@table = Table.last
|
||||||
visit root_path
|
visit root_path
|
||||||
# expect(Game.all.count).to eq 1
|
# expect(Game.all.count).to eq 1
|
||||||
click_link 'Play Now'
|
click_link 'Play Now'
|
||||||
@ -37,9 +37,9 @@ feature 'Play now', :devise, js: true do
|
|||||||
it 'shows and starts the game' do
|
it 'shows and starts the game' do
|
||||||
#TODO: Deprecated it shows the game title
|
#TODO: Deprecated it shows the game title
|
||||||
#expect(page).to have_content "Test Game"
|
#expect(page).to have_content "Test Game"
|
||||||
expect(page).to have_content "Hand to beat"
|
# expect(page).to have_content "Hand to beat"
|
||||||
#it 'is located at the correct url' do
|
#it 'is located at the correct url' do
|
||||||
expect(current_path).to eq table_path(@game.table)
|
# expect(current_path).to eq table_path(@table)
|
||||||
|
|
||||||
#it 'shows the visitor as a player' do
|
#it 'shows the visitor as a player' do
|
||||||
@player = @game.players.last
|
@player = @game.players.last
|
||||||
@ -55,6 +55,7 @@ feature 'Play now', :devise, js: true do
|
|||||||
#TODO: Remove race condition
|
#TODO: Remove race condition
|
||||||
visit current_path
|
visit current_path
|
||||||
expect(page).to have_content @user2.display_name
|
expect(page).to have_content @user2.display_name
|
||||||
|
game_count = Game.all.count
|
||||||
#it 'the game is startable' do
|
#it 'the game is startable' do
|
||||||
click_button 'Start'
|
click_button 'Start'
|
||||||
#TODO: Remove race condition
|
#TODO: Remove race condition
|
||||||
@ -63,7 +64,7 @@ feature 'Play now', :devise, js: true do
|
|||||||
visit current_path
|
visit current_path
|
||||||
visit current_path
|
visit current_path
|
||||||
expect(page).to have_content 'Hand to beat'
|
expect(page).to have_content 'Hand to beat'
|
||||||
expect(Game.all.count).to eq 1
|
expect(Game.all.count).to eq (game_count + 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -61,6 +61,7 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
# Store initial state of players inventory
|
# Store initial state of players inventory
|
||||||
@player_inventory = @player.inventory.join(' ')
|
@player_inventory = @player.inventory.join(' ')
|
||||||
@card_to_play = @player.inventory.first
|
@card_to_play = @player.inventory.first
|
||||||
|
expect(page).to have_css("#inventory [data-card-name='#{@card_to_play.to_s}']")
|
||||||
find_card(@card_to_play).click
|
find_card(@card_to_play).click
|
||||||
click_button 'Play Hand'
|
click_button 'Play Hand'
|
||||||
#wait_for_ajax
|
#wait_for_ajax
|
||||||
@ -68,8 +69,7 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
# Played hand is rendered
|
# Played hand is rendered
|
||||||
expect(cards_to_beat).to eq @game.lowest_card.to_s
|
expect(cards_to_beat).to eq @game.lowest_card.to_s
|
||||||
# Player inventory is rendered without played cards
|
# Player inventory is rendered without played cards
|
||||||
#TODO: Deprecated have_content for inventory. Write new expectation.
|
expect(page).not_to have_css("#inventory [data-card-name='#{@card_to_play.to_s}']")
|
||||||
expect(page.find("#player_controls_#{@player.id}")).to_not have_content(@card_to_play.to_s)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Scenario: Invalid cards do not leave the players inventory
|
# Scenario: Invalid cards do not leave the players inventory
|
||||||
@ -87,16 +87,15 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
@cards_to_play << @player.inventory.first
|
@cards_to_play << @player.inventory.first
|
||||||
|
|
||||||
# Select each card to play
|
# Select each card to play
|
||||||
@cards_to_play.map {|card| find("[data-card-name='#{card.to_s}'] ~ img").click }
|
@cards_to_play.map {|card| find("[data-card-name='#{card.to_s}']").click }
|
||||||
#click_button 'Play Hand'
|
click_button 'Play Hand'
|
||||||
click_button "play_hand_button_#{@player.id}"
|
|
||||||
|
|
||||||
# Played hand is rendered
|
# Played hand is rendered
|
||||||
# TODO: Flash messages
|
# TODO: Flash messages
|
||||||
#expect(page).to have_content("Invalid pair")
|
expect(page).to have_content("Invalid pair")
|
||||||
# Player inventory is rendered with played cards
|
# Player inventory is rendered with played cards
|
||||||
@initial_player_inventory.each do |card|
|
@initial_player_inventory.each do |card|
|
||||||
expect(page).to have_selector("[data-card-name='#{card.to_s}'] ~ img")
|
expect(page).to have_css("#inventory input[data-card-name='#{card.to_s}']")
|
||||||
end
|
end
|
||||||
# TODO: This scenario is causing other scenarios to fail unless we slow down here
|
# TODO: This scenario is causing other scenarios to fail unless we slow down here
|
||||||
sleep 1
|
sleep 1
|
||||||
@ -121,7 +120,7 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
click_button 'Play Hand'
|
click_button 'Play Hand'
|
||||||
expect(page).to have_content "Hand to beat"
|
expect(page).to have_content "Hand to beat"
|
||||||
expect(cards_to_beat).to eq @card_to_play.to_s
|
expect(cards_to_beat).to eq @card_to_play.to_s
|
||||||
expect(page).to have_selector("#player-#{@next_player_id}.has-control")
|
expect(page).to have_selector("#player-#{@next_player_id}.taking-turn")
|
||||||
end
|
end
|
||||||
|
|
||||||
# Scenario: Player can not play an invalid hand on their turn
|
# Scenario: Player can not play an invalid hand on their turn
|
||||||
@ -132,17 +131,16 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
#@game.reload
|
#@game.reload
|
||||||
@cards_to_play = [@game.controlling_player.player_cards.order(:value).first.to_s, @game.controlling_player.player_cards.order(:value).last.to_s]
|
@cards_to_play = [@game.controlling_player.player_cards.order(:value).first.to_s, @game.controlling_player.player_cards.order(:value).last.to_s]
|
||||||
@cards_to_play.each do |card|
|
@cards_to_play.each do |card|
|
||||||
find("[data-card-name='#{card.to_s}'] ~ img").click
|
find("[data-card-name='#{card.to_s}']").click
|
||||||
end
|
end
|
||||||
#click_button 'Play Hand'
|
click_button 'Play Hand'
|
||||||
click_button "play_hand_button_#{@player.id}"
|
|
||||||
# controlling_player plays an invalid hand
|
# controlling_player plays an invalid hand
|
||||||
# expect invalid hand message
|
# expect invalid hand message
|
||||||
#:TODO: Flash messages
|
#:TODO: Flash messages
|
||||||
#expect(page).to have_content("Invalid pair.")
|
#expect(page).to have_content("Invalid pair.")
|
||||||
# expect inventory to remain unchanged
|
# expect inventory to remain unchanged
|
||||||
@game.controlling_player.inventory.each do |card|
|
@game.controlling_player.inventory.each do |card|
|
||||||
expect(page).to have_selector("[data-card-name='#{card.to_s}'] ~ img")
|
expect(page).to have_selector("[data-card-name='#{card.to_s}']")
|
||||||
end
|
end
|
||||||
# TODO: This scenario is causing other scenarios to fail unless we slow down here
|
# TODO: This scenario is causing other scenarios to fail unless we slow down here
|
||||||
sleep 1
|
sleep 1
|
||||||
@ -159,10 +157,9 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
@non_controlling_player = @game.players.where.not(id: @game.controlling_player_id).first
|
@non_controlling_player = @game.players.where.not(id: @game.controlling_player_id).first
|
||||||
login_as(@non_controlling_player.user, scope: :user)
|
login_as(@non_controlling_player.user, scope: :user)
|
||||||
visit game_path @game
|
visit game_path @game
|
||||||
#expect(page).to_not have_button 'Play Hand'
|
expect(page).to_not have_button 'Play Hand'
|
||||||
elem = page.find "input#play_hand_button_#{@non_controlling_player.id}"
|
# click_button 'Play Hand'
|
||||||
expect(elem.disabled?).to be true
|
# expect(page).to have_content "not your turn"
|
||||||
# TODO: Submit a POST request
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Scenario: Player can pass when it is their turn
|
# Scenario: Player can pass when it is their turn
|
||||||
@ -171,14 +168,16 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
# Then I see an successful pass message
|
# Then I see an successful pass message
|
||||||
scenario 'active player can pass' do
|
scenario 'active player can pass' do
|
||||||
@current_user = @game.controlling_player
|
@current_user = @game.controlling_player
|
||||||
#click_button 'Pass'
|
click_button 'Pass'
|
||||||
click_button "pass_hand_button_#{@player.id}"
|
# binding.pry
|
||||||
|
page.driver.browser.switch_to.alert.accept
|
||||||
|
# click_button "pass_hand_button_#{@player.id}"
|
||||||
## TODO: Flash messages
|
## TODO: Flash messages
|
||||||
#expect(page).to have_content 'Successfully passed.'
|
expect(page).to have_content 'Successfully passed.'
|
||||||
# Expect active player should rotate
|
# Expect active player should rotate
|
||||||
#expect(page).to_not have_button 'Play Hand'
|
# expect(page).to_not have_button 'Play Hand'
|
||||||
elem = page.find "input#play_hand_button_#{@player.id}"
|
# elem = page.find "input#play_hand_button_#{@player.id}"
|
||||||
expect(elem.disabled?).to be false
|
# expect(elem.disabled?).to be false
|
||||||
|
|
||||||
@new_controlling_player = @game.controlling_player
|
@new_controlling_player = @game.controlling_player
|
||||||
expect(@game.controlling_player).to_not eq(@controlling_player)
|
expect(@game.controlling_player).to_not eq(@controlling_player)
|
||||||
@ -195,9 +194,9 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
@game.reload
|
@game.reload
|
||||||
@player = @game.controlling_player
|
@player = @game.controlling_player
|
||||||
@card_to_play = @player.inventory.first
|
@card_to_play = @player.inventory.first
|
||||||
find("[data-card-name='#{@card_to_play.to_s}'] ~ img").click
|
find("[data-card-name='#{@card_to_play.to_s}']").click
|
||||||
#click_button 'Play Hand'
|
click_button 'Play Hand'
|
||||||
click_button "play_hand_button_#{@player.id}"
|
# click_button "play_hand_button_#{@player.id}"
|
||||||
|
|
||||||
#TODO: Fix race condition
|
#TODO: Fix race condition
|
||||||
sleep 4
|
sleep 4
|
||||||
@ -210,13 +209,12 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
@game.controlling_player_id = @player.id
|
@game.controlling_player_id = @player.id
|
||||||
@game.save
|
@game.save
|
||||||
@game.reload
|
@game.reload
|
||||||
visit game_path @game
|
visit table_path @game.table
|
||||||
|
|
||||||
# Expect active player should rotate
|
expect(page).to have_button 'Play Hand'
|
||||||
#expect(page).to have_button 'Play Hand'
|
expect(@game.player_to_beat).to eq(@game.controlling_player)
|
||||||
expect(page).to have_button "play_hand_button_#{@player.id}"
|
debug
|
||||||
#expect(@game.player_to_beat).to eq(@game.controlling_player)
|
expect(page).to have_content "Hand to beat:\nNone"
|
||||||
expect(page).to have_content 'Hand to beat: None'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Scenario: Player wins the game
|
# Scenario: Player wins the game
|
||||||
@ -225,10 +223,13 @@ feature 'Play a hand', type: :feature, js: true do
|
|||||||
# And I am the first player to do so
|
# And I am the first player to do so
|
||||||
# Then I see a 1st place winner message
|
# Then I see a 1st place winner message
|
||||||
scenario 'first place winner' do
|
scenario 'first place winner' do
|
||||||
|
@card_to_play = @player.inventory.first
|
||||||
|
@player.inventory[1..12].map{|card| card.destroy}
|
||||||
# play last card
|
# play last card
|
||||||
pending "TBD"
|
find_card(@card_to_play).click
|
||||||
|
click_button 'Play Hand'
|
||||||
expect(@player.inventory.count).to eq 0
|
expect(@player.inventory.count).to eq 0
|
||||||
expect(page).to have_content "Winner: #{@player.display_name}"
|
expect(page).to have_content "Player #{@player.display_name} wins!"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,10 @@
|
|||||||
module GameHelpers
|
module GameHelpers
|
||||||
|
def debug
|
||||||
|
puts page.html
|
||||||
|
page.save_screenshot
|
||||||
|
# binding.pry
|
||||||
|
end
|
||||||
|
|
||||||
def setup_game
|
def setup_game
|
||||||
# Default game has 4 players
|
# Default game has 4 players
|
||||||
table = FactoryGirl.create :table
|
table = FactoryGirl.create :table
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user