一括処理をするクラスメソッドに対するRspecの書き方
「一定期間以上 既読状態なら未読に戻す」というクラスメソッドへのRSpecを書きたいのですが動作しません。
テストはこのように書き
let(:company){ Company.create }
describe ".remove_old_read" do
before{ Timecop.freeze(Time.local(2014,10,10)) }
after{ Timecop.return }
context "既読で3ヶ月以上前なら" do
before do
company.update_attributes(read: true, read_at: Time.new(2014,7,9))
Company.remove_old_read
end
it "未読にする" do
expect(company.read).to eq(false)
end
end
end
対するメソッドはこのように書いています。
class Company < ActiveRecord::Base
def self.remove_old_read
Company.where("read_at < ?", Time.zone.now - 3.month).each do |c|
c.update_attributes({read: false}) #if c.read
end
end
end
どこが間違えているのでしょうか?
特にクラスメソッドの呼び出し方法が自信ありません…。