Speed up spec
This commit is contained in:
parent
d03459746c
commit
5f91ea116a
@ -1,22 +1,19 @@
|
|||||||
RSpec.describe Play, type: :model do
|
RSpec.describe Play, type: :model do
|
||||||
before(:all) do
|
before(:all) do
|
||||||
@game = FactoryGirl.create(:game)
|
@game = setup_game
|
||||||
@user1 = FactoryGirl.create(:user)
|
|
||||||
@user2 = FactoryGirl.create(:user)
|
|
||||||
@game.add_player_from_user @user1
|
|
||||||
@game.add_player_from_user @user2
|
|
||||||
@game.save
|
|
||||||
@game.start
|
|
||||||
@play = @game.current_player.plays.new
|
@play = @game.current_player.plays.new
|
||||||
@play.game_id = @game.id
|
@play.game_id = @game.id
|
||||||
@play.save
|
@play.save
|
||||||
end
|
end
|
||||||
|
|
||||||
after(:each) do
|
after(:each) do
|
||||||
@play.errors.messages.clear
|
#reset game
|
||||||
@play.hand = []
|
@game.reload
|
||||||
@game.play_to_beat = nil
|
@game.play_to_beat_id = nil
|
||||||
|
|
||||||
|
# reset play
|
||||||
@play.reload
|
@play.reload
|
||||||
|
@play.errors[:player_cards].clear
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { @play }
|
subject { @play }
|
||||||
@ -73,16 +70,17 @@ RSpec.describe Play, type: :model do
|
|||||||
describe 'wins?' do
|
describe 'wins?' do
|
||||||
context 'it does not beat the hand_to_beat' do
|
context 'it does not beat the hand_to_beat' do
|
||||||
it 'single' do
|
it 'single' do
|
||||||
|
# Play a high single card
|
||||||
@play_to_beat = Play.new
|
@play_to_beat = Play.new
|
||||||
@play_to_beat.player = @game.players.where.not(id: @game.active_player.id).last
|
@play_to_beat.player = @game.players.where.not(id: @game.active_player.id).last
|
||||||
@play_to_beat.game = @game
|
@play_to_beat.game = @game
|
||||||
@play_to_beat.player_cards << @play_to_beat.player.player_cards.order(:value).last
|
@play_to_beat.player_cards << @play_to_beat.player.player_cards.order(:value).last
|
||||||
@play_to_beat.save
|
expect(@play_to_beat.save).to eq(true)
|
||||||
|
expect(@game.play_to_beat.play).to eq(@play_to_beat)
|
||||||
|
|
||||||
expect(@play.game.play_to_beat.play).to eq(@play_to_beat)
|
# Try to play a losing card
|
||||||
|
|
||||||
# Losing card
|
|
||||||
@cards_to_play = @play.player.player_cards.order(:value).first
|
@cards_to_play = @play.player.player_cards.order(:value).first
|
||||||
|
@play.reload
|
||||||
@play.player_cards << @cards_to_play
|
@play.player_cards << @cards_to_play
|
||||||
|
|
||||||
expect(@game.player_to_beat).to_not eq(@play.player)
|
expect(@game.player_to_beat).to_not eq(@play.player)
|
||||||
@ -128,16 +126,20 @@ RSpec.describe Play, type: :model do
|
|||||||
end
|
end
|
||||||
context 'it beats the hand_to_beat' do
|
context 'it beats the hand_to_beat' do
|
||||||
it 'single' do
|
it 'single' do
|
||||||
@play_to_beat = Play.new
|
# current player plays their lowest card
|
||||||
@play_to_beat.player = @game.players.where.not(id: @game.current_player.id).first
|
@cards_to_play = @play.player.player_cards.order(:value).first
|
||||||
@play_to_beat.game = @game
|
|
||||||
@play_to_beat.player_cards << @play_to_beat.player.player_cards.order(:value).first
|
|
||||||
@play_to_beat.save
|
|
||||||
|
|
||||||
@cards_to_play = @play.player.player_cards.order(:value).last
|
|
||||||
@play.player_cards << @cards_to_play
|
@play.player_cards << @cards_to_play
|
||||||
|
@play.save
|
||||||
|
@game.reload
|
||||||
|
|
||||||
|
# next player plays their lowest card and beats the previous play
|
||||||
|
@cards_to_play = @play.player.player_cards.order(:value).first
|
||||||
|
@play.player_cards << @cards_to_play
|
||||||
expect(@play.valid?).to eq(true)
|
expect(@play.valid?).to eq(true)
|
||||||
|
@play.save
|
||||||
|
@game.reload
|
||||||
|
|
||||||
|
expect(@game.play_to_beat.play).to eq(@play)
|
||||||
expect(@play.errors[:player_cards]).to eq([])
|
expect(@play.errors[:player_cards]).to eq([])
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -149,11 +151,10 @@ RSpec.describe Play, type: :model do
|
|||||||
]
|
]
|
||||||
|
|
||||||
@play_to_beat = Play.new
|
@play_to_beat = Play.new
|
||||||
@play_to_beat.player = @game.players.first
|
@play_to_beat.player = @game.current_player
|
||||||
@play_to_beat.player_cards << @cards_to_beat
|
@play_to_beat.player_cards << @cards_to_beat
|
||||||
@play_to_beat.game = @game
|
@play_to_beat.game = @game
|
||||||
@play_to_beat.save
|
@play_to_beat.save
|
||||||
|
|
||||||
@play.player_cards = [
|
@play.player_cards = [
|
||||||
@spade4 = PlayerCard.new(@deck.cards[4].instance_values),
|
@spade4 = PlayerCard.new(@deck.cards[4].instance_values),
|
||||||
@club4 = PlayerCard.new(@deck.cards[5].instance_values)
|
@club4 = PlayerCard.new(@deck.cards[5].instance_values)
|
||||||
|
|||||||
@ -3,4 +3,5 @@ RSpec.configure do |config|
|
|||||||
config.include Features::SessionHelpers, type: :feature
|
config.include Features::SessionHelpers, type: :feature
|
||||||
config.include Features::GameHelpers, type: :feature
|
config.include Features::GameHelpers, type: :feature
|
||||||
config.include Models::PlayHelpers, type: :model
|
config.include Models::PlayHelpers, type: :model
|
||||||
|
config.include Models::GameHelpers, type: :model
|
||||||
end
|
end
|
||||||
|
|||||||
@ -16,3 +16,23 @@ module Features
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# TODO: DRY up this repetition
|
||||||
|
module Models
|
||||||
|
module GameHelpers
|
||||||
|
def setup_game
|
||||||
|
# Default game has 4 players
|
||||||
|
game = FactoryGirl.create :game
|
||||||
|
user1 = FactoryGirl.create :user
|
||||||
|
user2 = FactoryGirl.create :user
|
||||||
|
user3 = FactoryGirl.create :user
|
||||||
|
user4 = FactoryGirl.create :user
|
||||||
|
game.add_player_from_user user1
|
||||||
|
game.add_player_from_user user2
|
||||||
|
game.add_player_from_user user3
|
||||||
|
game.add_player_from_user user4
|
||||||
|
game.start
|
||||||
|
return game
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user