Admins can delete an answer's associated images (#1999)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
class Admin::Poll::Questions::Answers::ImagesController < Admin::Poll::BaseController
|
||||
before_action :load_answer
|
||||
before_action :load_answer, except: :destroy
|
||||
|
||||
def index
|
||||
end
|
||||
@@ -20,6 +20,15 @@ class Admin::Poll::Questions::Answers::ImagesController < Admin::Poll::BaseContr
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@image = ::Image.find(params[:id])
|
||||
@image.destroy
|
||||
|
||||
respond_to do |format|
|
||||
format.js { render layout: false }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def images_params
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
$('.delete').bind('ajax:success', function () {
|
||||
$(this).closest('div').fadeOut()
|
||||
})
|
||||
@@ -12,5 +12,12 @@
|
||||
<% @answer.images.each do |image| %>
|
||||
<div class="small-12 medium-4 column end">
|
||||
<%= render_image(image, :large, true) if image.present? %>
|
||||
|
||||
<%= link_to t("images.remove_image"),
|
||||
admin_image_path(image),
|
||||
class: "delete float-right",
|
||||
method: :delete,
|
||||
remote: true,
|
||||
data: { confirm: t("admin.actions.confirm") } %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
@@ -7,8 +7,60 @@ feature 'Images' do
|
||||
login_as(admin.user)
|
||||
end
|
||||
|
||||
pending "Index"
|
||||
pending "Create"
|
||||
pending "Destroy"
|
||||
context 'Index' do
|
||||
scenario 'Answer with no images' do
|
||||
answer = create(:poll_question_answer,
|
||||
question: create(:poll_question))
|
||||
|
||||
visit admin_answer_images_path(answer)
|
||||
|
||||
expect(page).to_not have_css("img[title='']")
|
||||
end
|
||||
|
||||
scenario 'Answer with images' do
|
||||
answer = create(:poll_question_answer,
|
||||
question: create(:poll_question))
|
||||
image = create(:image, imageable: answer)
|
||||
|
||||
visit admin_answer_images_path(answer)
|
||||
|
||||
expect(page).to have_css("img[title='#{image.title}']")
|
||||
expect(page).to have_content(image.title)
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'Add image to answer', :js do
|
||||
answer = create(:poll_question_answer,
|
||||
question: create(:poll_question))
|
||||
image = create(:image)
|
||||
|
||||
visit admin_answer_images_path(answer)
|
||||
expect(page).to_not have_css("img[title='clippy.jpg']")
|
||||
expect(page).to_not have_content('clippy.jpg')
|
||||
|
||||
visit new_admin_answer_image_path(answer)
|
||||
imageable_attach_new_file(image, 'spec/fixtures/files/clippy.jpg')
|
||||
click_button 'Save image'
|
||||
|
||||
expect(page).to have_css("img[title='clippy.jpg']")
|
||||
expect(page).to have_content('clippy.jpg')
|
||||
end
|
||||
|
||||
scenario 'Remove image from answer', :js do
|
||||
answer = create(:poll_question_answer,
|
||||
question: create(:poll_question))
|
||||
image = create(:image, imageable: answer)
|
||||
|
||||
visit admin_answer_images_path(answer)
|
||||
expect(page).to have_css("img[title='#{image.title}']")
|
||||
expect(page).to have_content(image.title)
|
||||
|
||||
accept_confirm 'Are you sure?' do
|
||||
click_link 'Remove image'
|
||||
end
|
||||
|
||||
expect(page).to_not have_css("img[title='#{image.title}']")
|
||||
expect(page).to_not have_content(image.title)
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user