diff --git a/app/controllers/errs_controller.rb b/app/controllers/errs_controller.rb index 268d0e7..d09074e 100644 --- a/app/controllers/errs_controller.rb +++ b/app/controllers/errs_controller.rb @@ -40,6 +40,11 @@ class ErrsController < ApplicationController flash[:error] = "There was an error during issue creation. Check your tracker settings or try again later." redirect_to app_err_path(@app, @err) end + + def clear_issue + @err.update_attribute :issue_link, nil + redirect_to app_err_path(@app, @err) + end def resolve # Deal with bug in mogoid where find is returning an Enumberable obj diff --git a/app/views/errs/show.html.haml b/app/views/errs/show.html.haml index 475c0e1..7822310 100644 --- a/app/views/errs/show.html.haml +++ b/app/views/errs/show.html.haml @@ -10,12 +10,13 @@ %strong Last Notice: = last_notice_at(@err).to_s(:micro) - content_for :action_bar do + - if @err.app.issue_tracker + - if @err.issue_link.blank? + %span= link_to 'create issue', create_issue_app_err_path(@app, @err), :method => :post, :class => 'create-issue' + - else + %span= link_to 'go to issue', @err.issue_link, :class => 'goto-issue' + = link_to 'clear issue', clear_issue_app_err_path(@app, @err), :method => :delete, :confirm => "Clear err issues?", :class => 'clear-issue' - if @err.unresolved? - - if @err.app.issue_tracker - - if @err.issue_link.blank? - %span= link_to 'create issue', create_issue_app_err_path(@app, @err), :method => :post, :class => 'create-issue' - - else - %span= link_to 'go to issue', @err.issue_link, :class => 'goto-issue' %span= link_to 'resolve', resolve_app_err_path(@app, @err), :method => :put, :confirm => err_confirm, :class => 'resolve' %h4= @notice.try(:message) diff --git a/config/routes.rb b/config/routes.rb index a29d8e9..63dbd20 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -21,6 +21,7 @@ Errbit::Application.routes.draw do member do put :resolve post :create_issue + delete :clear_issue end end diff --git a/spec/controllers/errs_controller_spec.rb b/spec/controllers/errs_controller_spec.rb index 017bd80..4163bd3 100644 --- a/spec/controllers/errs_controller_spec.rb +++ b/spec/controllers/errs_controller_spec.rb @@ -292,4 +292,40 @@ describe ErrsController do end end end + + describe "DELETE /apps/:app_id/errs/:id/clear_issue" do + before(:each) do + sign_in Factory(:admin) + end + + context "err with issue" do + let(:err) { Factory :err, :issue_link => "http://some.host" } + + before(:each) do + delete :clear_issue, :app_id => err.app.id, :id => err.id + err.reload + end + + it "should redirect to err page" do + response.should redirect_to( app_err_path(err.app, err) ) + end + + it "should clear issue link" do + err.issue_link.should be_nil + end + end + + context "err without issue" do + let(:err) { Factory :err } + + before(:each) do + delete :clear_issue, :app_id => err.app.id, :id => err.id + err.reload + end + + it "should redirect to err page" do + response.should redirect_to( app_err_path(err.app, err) ) + end + end + end end -- libgit2 0.21.2