Skip to content

Commit

Permalink
Add explicit route for undeployment
Browse files Browse the repository at this point in the history
  • Loading branch information
Lance committed Jan 11, 2011
1 parent e607141 commit fe2167d
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 7 deletions.
22 changes: 16 additions & 6 deletions app/controllers/deployments_controller.rb
Expand Up @@ -77,13 +77,13 @@ def create
# DELETE /deployments/1
# DELETE /deployments/1.xml
def destroy
@deployment = @environment.deployments.find(params[:id])
@deployment.undeploy!
undeploy_and_redirect
end

respond_to do |format|
format.html { redirect_back_or_default(@deployment.artifact, :notice => 'Artifact was queued for undeployment.') }
format.xml { head :ok }
end
# POST /deployments/1/undeploy
# POST /deployments/1/undeploy.xml
def undeploy
undeploy_and_redirect
end

# POST /environments/:id/status.json
Expand All @@ -97,4 +97,14 @@ def find_environment
@environment = current_user.environments.find(params[:environment_id])
end

def undeploy_and_redirect
@deployment = @environment.deployments.find(params[:id])
@deployment.undeploy!

respond_to do |format|
format.html { redirect_back_or_default(@deployment.artifact, :notice => 'Artifact was queued for undeployment.') }
format.xml { head :ok }
end
end

end
2 changes: 1 addition & 1 deletion config/routes.rb
Expand Up @@ -41,7 +41,7 @@
end

environment.resources :storage_volumes, :member => {:status => :post}, :only => [:destroy]
environment.resources :deployments, :member => {:status => :post}
environment.resources :deployments, :member => {:status => :post, :undeploy => :post}
end

map.with_options :controller => 'events' do |events|
Expand Down
22 changes: 22 additions & 0 deletions spec/controllers/deployments_controller_spec.rb
Expand Up @@ -179,6 +179,28 @@ def mock_environment(stubs={})
end
end

describe "POST undeploy" do
before(:each) do
Deployment.should_receive(:find).with("37").and_return(mock_deployment)
mock_deployment.stub(:undeploy!)
end

it "undeploys the requested deployment" do
mock_deployment.should_receive(:undeploy!)
post :undeploy, :id => "37", :environment_id => "1"
end

it "redirects to the artifact show page" do
post :undeploy, :id => "37", :environment_id => "1"
response.should redirect_to(artifact_url(mock_deployment.artifact))
end

it "assigns the current environment to @environment" do
post :undeploy, :id => "37", :environment_id => "1"
assigns[:environment].should == mock_environment
end
end

describe "POST status" do
before(:each) do
Deployment.stub!(:find).with("13").and_return( mock_deployment )
Expand Down
4 changes: 4 additions & 0 deletions spec/routing/deployments_routing_spec.rb
Expand Up @@ -48,6 +48,10 @@
{ :delete => "/environments/1/deployments/1" }.should route_to(:controller => "deployments", :action => "destroy", :id => "1", :environment_id => '1')
end

it "recognizes and generates #undeploy" do
{ :post => '/environments/1/deployments/1/undeploy' }.should route_to(:controller => 'deployments', :action => 'undeploy', :id => '1', :environment_id => '1')
end

it "recognizes and generates #status" do
{ :post => '/environments/1/deployments/1/status' }.should route_to(:controller => 'deployments', :action => 'status', :id => '1', :environment_id => '1')
end
Expand Down

0 comments on commit fe2167d

Please sign in to comment.