Skip to content

Commit

Permalink
Fix crash when adding invalid documents to answers
Browse files Browse the repository at this point in the history
We were rendering the `new` action, but that action doesn't exist.
Before commit ec861ca, we were rendering the `edit` action of an
answer, which was confusing as well.

Note that, when adding an invalid document, `@answer.documents` contains
that invalid document (which is not present in the database). Since
we're rendering the index, this new document would appear in the list of
the documents that can be deleted; to avoid that, we're kind of
"reloading" the answer object in the component by finding the record in
the database. We aren't using `@answer.reload` because doing so would
remove the validation errors.
  • Loading branch information
javierm committed Sep 20, 2022
1 parent 75a2dbd commit d26b0f9
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@
</div>
<% end %>
<% if answer.documents.present? %>
<% if documents.present? %>
<table>
<tr>
<th scope="col"><%= t("admin.questions.show.answers.document_title") %></th>
<th scope="col"><%= t("admin.questions.show.answers.document_actions") %></th>
</tr>

<% answer.documents.each do |document| %>
<% documents.each do |document| %>
<tr>
<td>
<%= link_to document.title, document.attachment %>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,10 @@ class Admin::Poll::Questions::Answers::Documents::IndexComponent < ApplicationCo
def initialize(answer)
@answer = answer
end

private

def documents
@documents ||= @answer.class.find(@answer.id).documents
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def create
redirect_to admin_answer_documents_path(@answer),
notice: t("admin.documents.create.success_notice")
else
render :new
render :index
end
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,31 @@
end
end

scenario "Create document for answer" do
answer = create(:poll_question_answer, poll: future_poll)
describe "Create document for answer" do
scenario "with valid data" do
answer = create(:poll_question_answer, poll: future_poll)

visit admin_answer_documents_path(answer)
visit admin_answer_documents_path(answer)

documentable_attach_new_file(Rails.root.join("spec/fixtures/files/clippy.pdf"))
click_button "Save"

expect(page).to have_content "Document uploaded successfully"
expect(page).to have_link "clippy.pdf"
end

scenario "with invalid data" do
answer = create(:poll_question_answer, poll: future_poll)

documentable_attach_new_file(Rails.root.join("spec/fixtures/files/clippy.pdf"))
click_button "Save"
visit admin_answer_documents_path(answer)

expect(page).to have_content "Document uploaded successfully"
expect(page).to have_link "clippy.pdf"
documentable_attach_new_file(Rails.root.join("spec/fixtures/files/clippy.pdf"))
fill_in "Title", with: ""
click_button "Save"

expect(page).to have_content "1 error prevented this Answer from being saved"
expect(page).to have_content "Documents list"
end
end

scenario "Remove document from answer" do
Expand Down

0 comments on commit d26b0f9

Please sign in to comment.