Add read more links to poll question component

This commit is contained in:
decabeza
2022-09-09 13:20:55 +02:00
committed by Senén Rodero Rodríguez
parent 88007d0c5d
commit 1eb52fb045
5 changed files with 33 additions and 0 deletions

View File

@@ -12,4 +12,11 @@
<div id="<%= dom_id(question) %>_answers" class="padding"> <div id="<%= dom_id(question) %>_answers" class="padding">
<%= render Polls::Questions::AnswersComponent.new(question) %> <%= render Polls::Questions::AnswersComponent.new(question) %>
</div> </div>
<% if question.answers_with_read_more? %>
<div>
<p><%= t("poll_questions.read_more_about") %></p>
<p><%= answers_read_more_links %></p>
</div>
<% end %>
</div> </div>

View File

@@ -4,4 +4,10 @@ class Polls::Questions::QuestionComponent < ApplicationComponent
def initialize(question:) def initialize(question:)
@question = question @question = question
end end
def answers_read_more_links
safe_join(question.answers_with_read_more.map do |answer|
link_to answer.title, "#answer_#{answer.id}"
end, ", ")
end
end end

View File

@@ -639,6 +639,7 @@ en:
description: description:
unique: "You can select a maximum of 1 answer." unique: "You can select a maximum of 1 answer."
multiple: "You can select a maximum of %{maximum} answers." multiple: "You can select a maximum of %{maximum} answers."
read_more_about: "Read more about:"
proposal_notifications: proposal_notifications:
new: new:
title: "Send notification" title: "Send notification"

View File

@@ -639,6 +639,7 @@ es:
description: description:
unique: "Puedes seleccionar un máximo de 1 respuesta." unique: "Puedes seleccionar un máximo de 1 respuesta."
multiple: "Puedes seleccionar un máximo de %{maximum} respuestas." multiple: "Puedes seleccionar un máximo de %{maximum} respuestas."
read_more_about: "Leer más:"
proposal_notifications: proposal_notifications:
new: new:
title: "Enviar notificación" title: "Enviar notificación"

View File

@@ -0,0 +1,18 @@
require "rails_helper"
describe Polls::Questions::QuestionComponent do
it "renders more information links when any question answer has additional information" do
question = create(:poll_question)
answer_a = create(:poll_question_answer, question: question, title: "Answer A")
answer_b = create(:poll_question_answer, question: question, title: "Answer B")
allow_any_instance_of(Poll::Question::Answer).to receive(:with_read_more?).and_return(true)
render_inline Polls::Questions::QuestionComponent.new(question: question)
poll_question = page.find("#poll_question_#{question.id}")
expect(poll_question).to have_content("Read more about")
expect(poll_question).to have_link("Answer A", href: "#answer_#{answer_a.id}")
expect(poll_question).to have_link("Answer B", href: "#answer_#{answer_b.id}")
expect(poll_question).to have_content("Answer A, Answer B")
end
end