aboutsummaryrefslogtreecommitdiffstats
path: root/spec/lib/ability_spec.rb
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2013-03-19 14:02:25 -0700
committerLouise Crow <louise.crow@gmail.com>2013-03-19 14:02:25 -0700
commitb394b67663916c865452cc784d8642f72a305be5 (patch)
tree63c92172fe7813e6354da0ead628ed2192ef0ee2 /spec/lib/ability_spec.rb
parent8d21293461ce4b564261686ab8d6460f5fe51259 (diff)
parentf83b917ec2c59da0ce7c27da19b740366da58419 (diff)
Merge branch 'release/0.8' into wdtk
Conflicts: app/controllers/admin_request_controller.rb app/views/contact_mailer/from_admin_message.rhtml
Diffstat (limited to 'spec/lib/ability_spec.rb')
-rw-r--r--spec/lib/ability_spec.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/spec/lib/ability_spec.rb b/spec/lib/ability_spec.rb
new file mode 100644
index 000000000..f075d0f32
--- /dev/null
+++ b/spec/lib/ability_spec.rb
@@ -0,0 +1,51 @@
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+
+describe Ability do
+ describe ".can_update_request_state?" do
+ context "old and unclassified request" do
+ let(:request) { mock_model(InfoRequest, :is_old_unclassified? => true) }
+
+ context "logged out" do
+ let(:user) { nil }
+ before(:each) { request.stub!(:is_owning_user?).and_return(false) }
+ it { Ability::can_update_request_state?(user, request).should be_false }
+ end
+
+ context "logged in but not owner of request" do
+ let(:user) { mock_model(User) }
+ before(:each) { request.stub!(:is_owning_user?).and_return(false) }
+
+ it { Ability::can_update_request_state?(user, request).should be_true }
+ end
+ end
+
+ context "new request" do
+ let(:request) { mock_model(InfoRequest, :is_old_unclassified? => false) }
+
+ context "logged out" do
+ let(:user) { nil }
+ before(:each) { request.stub!(:is_owning_user?).and_return(false) }
+
+ it { Ability::can_update_request_state?(user, request).should be_false }
+ end
+
+ context "logged in" do
+ let(:user) { mock_model(User) }
+
+ # An owner of a request can also be someone with admin powers
+ context "as owner of request" do
+ before(:each) { request.stub!(:is_owning_user?).and_return(true) }
+
+ it { Ability::can_update_request_state?(user, request).should be_true }
+ end
+
+ context "but not owner of request" do
+ before(:each) { request.stub!(:is_owning_user?).and_return(false) }
+
+ it { Ability::can_update_request_state?(user, request).should be_false }
+ end
+ end
+ end
+ end
+end
+