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