Skip to content

Instantly share code, notes, and snippets.

@yattom
Last active September 17, 2018 11:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yattom/fd664beb5835586e07da5e90fe0368a4 to your computer and use it in GitHub Desktop.
Save yattom/fd664beb5835586e07da5e90fe0368a4 to your computer and use it in GitHub Desktop.
自動販売機のRubyコードとspecファイル。モブプログラミングでTDDで書いたもの。アジャイルジャパン2017にて / VendingMachine ruby code and spec written in a mob programming session in TDD way at Ajile Japan 2017
# cola/lib/vending_machine.rb
class VendingMachine
attr_reader :dispense_box
attr_reader :refund_box
attr_accessor :zaiko_count
def initialize
@zaiko_count = 1
end
def receive(coin)
if has_zaiko()
@dispense_box = "Cola"
decrease_zaiko()
else
@refund_box = "100Yen"
end
end
def has_zaiko()
@zaiko_count > 0
end
def decrease_zaiko()
@zaiko_count -= 1
end
def receive_zaiko()
@zaiko_count += 1
end
end
# cola/spec/lib/vending_machine_sperb
require 'vending_machine'
describe VendingMachine, "cola wo uru" do
before do
@vending_machine = VendingMachine.new
end
context "shoki" do
it "cola ga detekuru" do
expect(@vending_machine.dispense_box).to eq(nil)
expect(@vending_machine.refund_box).to eq(nil)
end
end
context "kado" do
context "zaiko ari" do
it "100 Yen ireruto cola ga detekuru" do
coin = "100Yen"
@vending_machine.receive(coin)
expect(@vending_machine.dispense_box).to eq("Cola")
expect(@vending_machine.refund_box).to eq(nil)
end
end
context "zaiko ari" do
it "2kai ireruto cola ha denai" do
coin = "100Yen"
@vending_machine.receive(coin)
@vending_machine.receive(coin)
expect(@vending_machine.dispense_box).to eq("Cola")
expect(@vending_machine.refund_box).to eq("100Yen")
end
end
end
end
describe VendingMachine, "zaiko wo tasu" do
context "zaiko ga kara" do
it "zaiko ga 1 ni naru" do
vending_machine = VendingMachine.new
vending_machine.zaiko_count = 0
vending_machine.receive_zaiko
expect(vending_machine.zaiko_count).to eq(1)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment