require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
describe Projects, "#destroy" do
include Scenarios::AppleProjects
before :all do
@person = FixtureFactory.valid_person
@person.save!
setup_scenario
@project = @account.projects.first
end
describes "when accessing as guest" do
it "prohibits access" do
assert_access_prohibited(nil, Projects, :destroy, valid_request_params)
end
end
describe "when processing valid request" do
before :all do
@response = perform_valid_request
end
it "finds account using id" do
@response.should find_entity(:account)
@response.assigns(:account).id.should == @account.id
end
it "destroys the project" do
Project.exists?(@project.id).should be_false
end
it "redirects to account dashboard" do
@response.should redirect_to(url(:dashboard))
end
end
describe "when processing request with invalid project id" do
it "raises NotFound" do
assert_not_found(@person, Projects, :destroy, perform_request_with_invalid_id)
end
end
#
# Helpers
#
def valid_request_params
{ :id => @project.id }
end
def perform_valid_request
dispatch_to(Projects, :destroy, valid_request_params) do |controller|
controller.stub!(:current_person).and_return(@person)
controller.stub!(:account_name_from_subdomain).and_return(@account.subdomain)
end
end
def request_params_with_invalid_id
{ :account_id => @account.id, :id => 9999999 }
end
def perform_request_with_invalid_id
dispatch_to(Projects, :destroy, request_params_with_invalid_id) do |controller|
controller.stub!(:current_person).and_return(@person)
controller.stub!(:account_name_from_subdomain).and_return(@account.subdomain)
end
end
end