2014-02-12 4 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' в обоих тестовых случаях. 'ожидать (p1.reload.enabled) .to eq (false)' и 'ожидать (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