diff --git a/app.rb b/app.rb index 4abb71ec..b7a66f92 100644 --- a/app.rb +++ b/app.rb @@ -1,8 +1,53 @@ require 'sinatra/base' +require './lib/player' +# require "sinatra/reloader" if development? class RockPaperScissors < Sinatra::Base - get '/test' do - 'test page' + + enable :sessions + + # get '/test' do + # 'test page' + # end + + get '/' do + erb(:index) + end + + post '/submit-name' do + session["player_name"] = params["player_name"] + erb(:results) + end + + # get '/results' do + # @player_name = session["player_name"] + + # erb(:results) + # end + + get '/rock' do + player = Player.new + $pc_plays = player.pc_plays + $player_plays = "rock" + $result = player.rock + erb(:rock) + end + + get '/paper' do + player = Player.new + $pc_plays = player.pc_plays + $player_plays = "paper" + $result = player.paper + erb(:rock) + end + + get '/scissors' do + player = Player.new + $pc_plays = player.pc_plays + $player_plays = "scissors" + $result = player.scissors + erb(:rock) end run! if app_file == $0 + end diff --git a/config.ru b/config.ru index a33b6bb0..f7cfbf79 100644 --- a/config.ru +++ b/config.ru @@ -1,2 +1,5 @@ require_relative './app' + run RockPaperScissors + + diff --git a/lib/player.rb b/lib/player.rb new file mode 100644 index 00000000..38508c2c --- /dev/null +++ b/lib/player.rb @@ -0,0 +1,46 @@ +class Player + def pc_plays + @pc_plays = %w(rock paper scissors).sample + # return @pc_plays + end + + def rock + if $pc_plays == "scissors" + $gameplay = "You win!" + # return $gameplay + elsif $pc_plays == "paper" + $gameplay = "You lose!" + # return $gameplay + elsif $pc_plays == "rock" + $gameplay = "It's a tie!" + # return $gameplay + end + end + + def scissors + if $pc_plays == "scissors" + $gameplay = "It's a tie!" + # return $gameplay + elsif $pc_plays == "paper" + $gameplay = "You win!" + # return $gameplay + elsif $pc_plays == "rock" + $gameplay = "You lose! :(" + # return $gameplay + end + end + + def paper + if $pc_plays == "scissors" + $gameplay = "You lose!" + return $gameplay + elsif $pc_plays == "paper" + $gameplay = "It's a tie!" + return $gameplay + elsif $pc_plays == "rock" + $gameplay = "You win!" + return $gameplay + end + end + +end diff --git a/spec/feature_spec.rb b/spec/feature_spec.rb new file mode 100644 index 00000000..4cc14832 --- /dev/null +++ b/spec/feature_spec.rb @@ -0,0 +1,5 @@ +describe '#name' do + xit 'returns the name' do + expect(Bob.name).to eq 'Bob' + end +end diff --git a/spec/features/choose_rock_spec.rb b/spec/features/choose_rock_spec.rb new file mode 100644 index 00000000..439c7d94 --- /dev/null +++ b/spec/features/choose_rock_spec.rb @@ -0,0 +1,9 @@ +feature 'Choose rock weapon' do + scenario 'clicking on rock button' do + visit('/submit-name') + fill_in :player_1_name, with: 'Bob' + click_button 'Submit' + click_button 'ROCK' + expect(page).to have_content 'rock' + end +end \ No newline at end of file diff --git a/spec/features/enter_name_spec.rb b/spec/features/enter_name_spec.rb new file mode 100644 index 00000000..c19ae029 --- /dev/null +++ b/spec/features/enter_name_spec.rb @@ -0,0 +1,8 @@ +feature 'Enter names' do + scenario 'submitting name' do + visit('/') + fill_in :player_name, with: 'Bob' + click_button 'Submit' + expect(page).to have_content 'Bob' + end +end \ No newline at end of file diff --git a/spec/features/test_page_spec.rb b/spec/features/test_page_spec.rb index 5d6e8919..6f061e87 100644 --- a/spec/features/test_page_spec.rb +++ b/spec/features/test_page_spec.rb @@ -1,5 +1,5 @@ feature 'test page' do - scenario 'visit test page' do + xscenario 'visit test page' do visit '/test' expect(page).to have_content('test page') end diff --git a/spec/player_spec.rb b/spec/player_spec.rb new file mode 100644 index 00000000..3a00ff76 --- /dev/null +++ b/spec/player_spec.rb @@ -0,0 +1,69 @@ +describe Player do + it "chooses a pc weapon at random" do + player = Player.new + expect(['rock', 'paper', 'scissors']).to include(player.pc_plays) + end + + + context "when player chooses rock" do + it "correctly identifies win" do + player = Player.new + $pc_plays = "scissors" + expect(player.rock).to eq "You win!" + end + + it "correctly identifies lost" do + player = Player.new + $pc_plays = "paper" + expect(player.rock).to eq "You lose!" + end + + it "correctly identifies draw" do + player = Player.new + $pc_plays = "rock" + expect(player.rock).to eq "It's a tie!" + end + end + + context "when player chooses scissors" do + it "correctly identifies win" do + player = Player.new + $pc_plays = "paper" + expect(player.scissors).to eq "You win!" + end + + it "correctly identifies lost" do + player = Player.new + $pc_plays = "rock" + expect(player.scissors).to eq "You lose! :(" + end + + it "correctly identifies draw" do + player = Player.new + $pc_plays = "scissors" + expect(player.scissors).to eq "It's a tie!" + end + end + + context "when player chooses paper" do + it "correctly identifies win" do + player = Player.new + $pc_plays = "rock" + expect(player.paper).to eq "You win!" + end + + it "correctly identifies lost" do + player = Player.new + $pc_plays = "scissors" + expect(player.paper).to eq "You lose!" + end + + it "correctly identifies draw" do + player = Player.new + $pc_plays = "paper" + expect(player.paper).to eq "It's a tie!" + end + end +end + + diff --git a/views/index.erb b/views/index.erb new file mode 100644 index 00000000..4ffb0c29 --- /dev/null +++ b/views/index.erb @@ -0,0 +1,9 @@ + +