diff --git a/app/controllers/admin/poll/questions/answers/images_controller.rb b/app/controllers/admin/poll/questions/answers/images_controller.rb
index 6afa447a0..1df4500ef 100644
--- a/app/controllers/admin/poll/questions/answers/images_controller.rb
+++ b/app/controllers/admin/poll/questions/answers/images_controller.rb
@@ -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
diff --git a/app/views/admin/poll/questions/answers/images/destroy.js.erb b/app/views/admin/poll/questions/answers/images/destroy.js.erb
new file mode 100644
index 000000000..9b495b605
--- /dev/null
+++ b/app/views/admin/poll/questions/answers/images/destroy.js.erb
@@ -0,0 +1,3 @@
+$('.delete').bind('ajax:success', function () {
+ $(this).closest('div').fadeOut()
+})
diff --git a/app/views/admin/poll/questions/answers/images/index.html.erb b/app/views/admin/poll/questions/answers/images/index.html.erb
index d97f648eb..15af0ef1f 100644
--- a/app/views/admin/poll/questions/answers/images/index.html.erb
+++ b/app/views/admin/poll/questions/answers/images/index.html.erb
@@ -12,5 +12,12 @@
<% @answer.images.each do |image| %>
<%= 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") } %>
<% end %>
diff --git a/app/views/images/_image.html.erb b/app/views/images/_image.html.erb
index 2062a691b..65ef9324e 100644
--- a/app/views/images/_image.html.erb
+++ b/app/views/images/_image.html.erb
@@ -15,4 +15,4 @@
<% end %>
-
\ No newline at end of file
+
diff --git a/spec/features/admin/poll/questions/answers/images/images_spec.rb b/spec/features/admin/poll/questions/answers/images/images_spec.rb
index 915c8d6b0..497d873a0 100644
--- a/spec/features/admin/poll/questions/answers/images/images_spec.rb
+++ b/spec/features/admin/poll/questions/answers/images/images_spec.rb
@@ -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))
-end
\ No newline at end of file
+ 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