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
|
class Admin::Poll::Questions::Answers::ImagesController < Admin::Poll::BaseController
|
||||||
before_action :load_answer
|
before_action :load_answer, except: :destroy
|
||||||
|
|
||||||
def index
|
def index
|
||||||
end
|
end
|
||||||
@@ -20,6 +20,15 @@ class Admin::Poll::Questions::Answers::ImagesController < Admin::Poll::BaseContr
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@image = ::Image.find(params[:id])
|
||||||
|
@image.destroy
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.js { render layout: false }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def images_params
|
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| %>
|
<% @answer.images.each do |image| %>
|
||||||
<div class="small-12 medium-4 column end">
|
<div class="small-12 medium-4 column end">
|
||||||
<%= render_image(image, :large, true) if image.present? %>
|
<%= 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>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -7,8 +7,60 @@ feature 'Images' do
|
|||||||
login_as(admin.user)
|
login_as(admin.user)
|
||||||
end
|
end
|
||||||
|
|
||||||
pending "Index"
|
context 'Index' do
|
||||||
pending "Create"
|
scenario 'Answer with no images' do
|
||||||
pending "Destroy"
|
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
|
end
|
||||||
Reference in New Issue
Block a user