We were using the same code to render links to agree and disagree, so we can extract a new component for this code. We're also adding component tests to make it easier to test whether we're breaking anything while refactoring, although the code is probably already covered by system tests. Since the votes mixin was only used in one place, we're removing it and moving most of its code to a new CSS file for the shared component.
30 lines
962 B
Ruby
30 lines
962 B
Ruby
require "rails_helper"
|
|
|
|
describe Debates::VotesComponent do
|
|
let(:debate) { create(:debate, title: "What about the 2030 agenda?") }
|
|
let(:component) { Debates::VotesComponent.new(debate) }
|
|
|
|
describe "Agree and disagree links" do
|
|
it "is shown as plain text to anonymous users" do
|
|
render_inline component
|
|
|
|
expect(page).to have_content "I agree"
|
|
expect(page).to have_content "I disagree"
|
|
expect(page).to have_content "You must sign in or sign up to continue."
|
|
expect(page).not_to have_link "I agree"
|
|
expect(page).not_to have_link "I disagree"
|
|
end
|
|
|
|
it "is shown to identified users" do
|
|
sign_in(create(:user))
|
|
|
|
render_inline component
|
|
|
|
expect(page).to have_link count: 2
|
|
expect(page).to have_link "I agree", title: "I agree"
|
|
expect(page).to have_link "I disagree", title: "I disagree"
|
|
expect(page).not_to have_content "You must sign in or sign up to continue."
|
|
end
|
|
end
|
|
end
|