aboutsummaryrefslogtreecommitdiffstats
path: root/spec/controllers/admin_public_body_controller_spec.rb
diff options
context:
space:
mode:
authorRobin Houston <robin.houston@gmail.com>2012-01-26 23:21:12 +0000
committerRobin Houston <robin.houston@gmail.com>2012-01-26 23:21:12 +0000
commit24bbaa5afac5ce27c351e3b460be1b0182446ba1 (patch)
tree3527992bb6e08e13fa1e7d686663bf10f491cd9e /spec/controllers/admin_public_body_controller_spec.rb
parent00aa3e5675d2137b55e8e0bf494f4a2078a5151f (diff)
Refactor test code so new test data can be added
Previously many of the tests made assumptions about the global structure of the test data set: the total number of requests, for example, or the names of all public bodies. This makes it difficult to add to the test data. This change is intended to make the test data easier to extend by eliminating such global assumptions.
Diffstat (limited to 'spec/controllers/admin_public_body_controller_spec.rb')
-rw-r--r--spec/controllers/admin_public_body_controller_spec.rb73
1 files changed, 35 insertions, 38 deletions
diff --git a/spec/controllers/admin_public_body_controller_spec.rb b/spec/controllers/admin_public_body_controller_spec.rb
index 2670f2add..6954e22a1 100644
--- a/spec/controllers/admin_public_body_controller_spec.rb
+++ b/spec/controllers/admin_public_body_controller_spec.rb
@@ -25,9 +25,9 @@ describe AdminPublicBodyController, "when administering public bodies" do
end
it "creates a new public body" do
- PublicBody.count.should == 2
+ n = PublicBody.count
post :create, { :public_body => { :name => "New Quango", :short_name => "", :tag_string => "blah", :request_email => 'newquango@localhost', :last_edit_comment => 'From test code' } }
- PublicBody.count.should == 3
+ PublicBody.count.should == n + 1
end
it "edits a public body" do
@@ -42,13 +42,19 @@ describe AdminPublicBodyController, "when administering public bodies" do
pb.name.should == "Renamed"
end
+ it "does not destroy a public body that has associated requests" do
+ id = public_bodies(:humpadink_public_body).id
+ n = PublicBody.count
+ post :destroy, { :id => id }
+ response.should redirect_to(:controller=>'admin_public_body', :action=>'show', :id => id)
+ PublicBody.count.should == n
+ end
+
it "destroys a public body" do
- PublicBody.count.should == 2
- info_request_events(:badger_outgoing_message_event).destroy
- outgoing_messages(:badger_outgoing_message).destroy
- info_requests(:badger_request).destroy
- post :destroy, { :id => 3 }
- PublicBody.count.should == 1
+ n = PublicBody.count
+ post :destroy, { :id => public_bodies(:forlorn_public_body).id }
+ response.should redirect_to(:controller=>'admin_public_body', :action=>'list')
+ PublicBody.count.should == n - 1
end
it "sets a using_admin flag" do
@@ -64,10 +70,10 @@ describe AdminPublicBodyController, "when administering public bodies and paying
it "disallows non-authenticated users to do anything" do
@request.env["HTTP_AUTHORIZATION"] = ""
- PublicBody.count.should == 2
+ n = PublicBody.count.should
post :destroy, { :id => 3 }
response.code.should == "401"
- PublicBody.count.should == 2
+ PublicBody.count.should == n
session[:using_admin].should == nil
end
@@ -76,25 +82,22 @@ describe AdminPublicBodyController, "when administering public bodies and paying
config['ADMIN_USERNAME'] = ''
config['ADMIN_PASSWORD'] = ''
@request.env["HTTP_AUTHORIZATION"] = ""
- PublicBody.count.should == 2
- info_request_events(:badger_outgoing_message_event).destroy
- outgoing_messages(:badger_outgoing_message).destroy
- info_requests(:badger_request).destroy
- post :destroy, { :id => 3 }
- PublicBody.count.should == 1
+
+ n = PublicBody.count
+ post :destroy, { :id => public_bodies(:forlorn_public_body).id }
+ PublicBody.count.should == n - 1
session[:using_admin].should == 1
end
+
it "skips admin authorisation when no username set" do
config = MySociety::Config.load_default()
config['ADMIN_USERNAME'] = ''
config['ADMIN_PASSWORD'] = 'fuz'
@request.env["HTTP_AUTHORIZATION"] = ""
- PublicBody.count.should == 2
- info_request_events(:badger_outgoing_message_event).destroy
- outgoing_messages(:badger_outgoing_message).destroy
- info_requests(:badger_request).destroy
- post :destroy, { :id => 3 }
- PublicBody.count.should == 1
+
+ n = PublicBody.count
+ post :destroy, { :id => public_bodies(:forlorn_public_body).id }
+ PublicBody.count.should == n - 1
session[:using_admin].should == 1
end
it "forces authorisation when password and username set" do
@@ -102,14 +105,11 @@ describe AdminPublicBodyController, "when administering public bodies and paying
config['ADMIN_USERNAME'] = 'biz'
config['ADMIN_PASSWORD'] = 'fuz'
@request.env["HTTP_AUTHORIZATION"] = ""
- PublicBody.count.should == 2
+ n = PublicBody.count.should
basic_auth_login(@request, "baduser", "badpassword")
- info_request_events(:badger_outgoing_message_event).destroy
- outgoing_messages(:badger_outgoing_message).destroy
- info_requests(:badger_request).destroy
- post :destroy, { :id => 3 }
+ post :destroy, { :id => public_bodies(:forlorn_public_body).id }
response.code.should == "401"
- PublicBody.count.should == 2
+ PublicBody.count.should == n
session[:using_admin].should == nil
end
@@ -179,12 +179,9 @@ describe AdminPublicBodyController, "when administering public bodies with i18n"
end
it "destroy a public body" do
- PublicBody.count.should == 2
- info_request_events(:badger_outgoing_message_event).destroy
- outgoing_messages(:badger_outgoing_message).destroy
- info_requests(:badger_request).destroy
- post :destroy, { :id => 3 }
- PublicBody.count.should == 1
+ n = PublicBody.count
+ post :destroy, { :id => public_bodies(:forlorn_public_body).id }
+ PublicBody.count.should == n - 1
end
end
@@ -207,23 +204,23 @@ describe AdminPublicBodyController, "when creating public bodies with i18n" do
it "creates a new public body in one locale" do
- PublicBody.count.should == 2
+ n = PublicBody.count
post :create, { :public_body => { :name => "New Quango", :short_name => "", :tag_string => "blah", :request_email => 'newquango@localhost', :last_edit_comment => 'From test code' } }
- PublicBody.count.should == 3
+ PublicBody.count.should == n + 1
body = PublicBody.find_by_name("New Quango")
response.should redirect_to(:controller=>'admin_public_body', :action=>'show', :id=>body.id)
end
it "creates a new public body with multiple locales" do
- PublicBody.count.should == 2
+ n = PublicBody.count
post :create, {
:public_body => {
:name => "New Quango", :short_name => "", :tag_string => "blah", :request_email => 'newquango@localhost', :last_edit_comment => 'From test code',
:translated_versions => [{ :locale => "es", :name => "Mi Nuevo Quango", :short_name => "", :request_email => 'newquango@localhost' }]
}
}
- PublicBody.count.should == 3
+ PublicBody.count.should == n + 1
body = PublicBody.find_by_name("New Quango")
body.translations.map {|t| t.locale.to_s}.sort.should == ["en", "es"]