diff --git a/ruby/gilded_rose.rb b/ruby/gilded_rose.rb index e177a497..7d24a180 100644 --- a/ruby/gilded_rose.rb +++ b/ruby/gilded_rose.rb @@ -49,12 +49,23 @@ class GildedRose end end end + + # itemのnameがfooだった場合に、fixmeに更新する + item.update_name_from_foo_to_fixme end end end +# 必ず自身のインスタンス変数を操作するよう実装する +# いいクラスの構成要素 +# インスタンス変数 +# 完全性を保証するようにインスタンス変数を操作するメソッド + +# コンストラクタで初期化する +# initializeメソッドを実装する class Item - attr_accessor :name, :sell_in, :quality + attr_accessor :sell_in, :quality + attr_reader :name def initialize(name, sell_in, quality) @name = name @@ -65,4 +76,15 @@ class Item def to_s() "#{@name}, #{@sell_in}, #{@quality}" end + + def update_name_from_foo_to_fixme + return if can_change_name_fixme? + @name = "fixme" + end + + private + + def can_change_name_fixme? + @name != "foo" + end end diff --git a/ruby/gilded_rose_spec.rb b/ruby/gilded_rose_spec.rb index 015a759f..d5696c99 100644 --- a/ruby/gilded_rose_spec.rb +++ b/ruby/gilded_rose_spec.rb @@ -3,7 +3,7 @@ require 'rspec' require File.join(File.dirname(__FILE__), 'gilded_rose') describe GildedRose do - it "does not change the name" do + it "fooをfixmeに変える" do items = [Item.new("foo", 0, 0)] GildedRose.new(items).update_quality() expect(items[0].name).to eq "fixme"