require "rails_helper" describe Polls::Questions::ReadMoreComponent do include Rails.application.routes.url_helpers let(:poll) { create(:poll) } let(:question) { create(:poll_question, poll: poll, title: "Question title?") } let(:option) { create(:poll_question_option, question: question) } it "renders question title" do create(:poll_question_option, question: question, description: "Question option description") render_inline Polls::Questions::ReadMoreComponent.new(question: question) expect(page).to have_content "Question title?" end it "renders options in the given order" do create(:poll_question_option, title: "Answer A", question: question, given_order: 2) create(:poll_question_option, title: "Answer B", question: question, given_order: 1) render_inline Polls::Questions::ReadMoreComponent.new(question: question) expect("Answer B").to appear_before("Answer A") end it "does not render when options does not have more information" do option.update!(description: nil) render_inline Polls::Questions::ReadMoreComponent.new(question: question) expect(page).not_to be_rendered end it "renders options with videos" do create(:poll_option_video, option: option, title: "Awesome video", url: "youtube.com/watch?v=123") render_inline Polls::Questions::ReadMoreComponent.new(question: question) expect(page).to have_link("Awesome video", href: "youtube.com/watch?v=123") end it "renders options with images" do create(:image, imageable: option, title: "The yes movement") render_inline Polls::Questions::ReadMoreComponent.new(question: question) expect(page).to have_css "img[alt='The yes movement']" end it "renders options with documents" do create(:document, documentable: option, title: "The yes movement") render_inline Polls::Questions::ReadMoreComponent.new(question: question) expect(page).to have_link text: "The yes movement" end end