2014-02-12 38 views
0

如果啓用了新消息,它會自動從以前的消息中刪除已啓用的消息。 我寫了一個規範,但他們失敗了。由於這些規範可以改進?模型方法的規格DRY

Post.rb

before_validation :removes_enabled 


def removes_enabled 
    if enabled_changed? && enabled? 
    Post.update_all(enabled: false) 
    end 
end 

我的規格:

describe "#remove_enabled" do 
    let!(:p1) {create :post, enabled: true } 

    it "should remove enabled for other post" do 
    p2 = create :post, enabled: true 
    expect(p1.enabled).to eq(false) 
    end 

    it "should not remove enabled for other post if current post is not enabled" do 
    p2 = create :post, enabled: false 
    expect(p1.enabled).to eq(true) 
    end 
end 
+1

嘗試在兩種測試案例重裝'p1'。 'expect(p1.reload.enabled).to eq(false)'和'expect(p1.reload.enabled).to eq(true)' – usha

+0

謝謝,它有幫助。 – vadus1

回答

0
describe "#remove_enabled" do 
    let!(:post) { create :post, enabled: true } 

    it "should remove enabled for other post" do 
    create :post, enabled: true 
    expect(post.reload.enabled).to eq(false) 
    end 

    it "should not remove enabled for other post if current post is not enabled" do 
    create :post, enabled: false 
    expect(post.reload.enabled).to eq(true) 
    end 
end