문제

If new news is enabled, it automatically removes enabled from the previous news. I wrote a spec, but they fail. As these spec can be improved?

Post.rb

before_validation :removes_enabled


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

My spec:

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
도움이 되었습니까?

해결책

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top