aboutsummaryrefslogtreecommitdiffstats
path: root/spec/integration/admin_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/integration/admin_spec.rb')
-rw-r--r--spec/integration/admin_spec.rb51
1 files changed, 49 insertions, 2 deletions
diff --git a/spec/integration/admin_spec.rb b/spec/integration/admin_spec.rb
index 25872fb4a..5842eeb00 100644
--- a/spec/integration/admin_spec.rb
+++ b/spec/integration/admin_spec.rb
@@ -13,15 +13,62 @@ describe "When administering the site" do
admin = login(:admin_user)
# Now fetch the "log in as" link to log in as Bob
- admin.get_via_redirect "/admin/user/login_as/#{users(:bob_smith_user).id}"
+ admin.get_via_redirect "/en/admin/user/login_as/#{users(:bob_smith_user).id}"
admin.response.should be_success
admin.session[:user_id].should == users(:bob_smith_user).id
end
it 'does not allow a non-admin user to login as another user' do
robin = login(:robin_user)
- robin.get_via_redirect "/admin/user/login_as/#{users(:bob_smith_user).id}"
+ robin.get_via_redirect "/en/admin/user/login_as/#{users(:bob_smith_user).id}"
robin.response.should be_success
robin.session[:user_id].should_not == users(:bob_smith_user).id
end
+
+ it "allows redelivery of an incoming message to a closed request" do
+ confirm(:admin_user)
+ admin = login(:admin_user)
+ ir = info_requests(:fancy_dog_request)
+ close_request(ir)
+ InfoRequest.holding_pen_request.incoming_messages.length.should == 0
+ ir.incoming_messages.length.should == 1
+ receive_incoming_mail('incoming-request-plain.email', ir.incoming_email, "frob@nowhere.com")
+ InfoRequest.holding_pen_request.incoming_messages.length.should == 1
+ new_im = InfoRequest.holding_pen_request.incoming_messages[0]
+ ir.incoming_messages.length.should == 1
+ post_params = {'redeliver_incoming_message_id' => new_im.id,
+ 'url_title' => ir.url_title}
+ admin.post '/en/admin/request/redeliver_incoming', post_params
+ admin.response.location.should == 'http://www.example.com/en/admin/request/show/101'
+ ir = InfoRequest.find_by_url_title(ir.url_title)
+ ir.incoming_messages.length.should == 2
+
+ InfoRequest.holding_pen_request.incoming_messages.length.should == 0
+ end
+
+ it "allows redelivery of an incoming message to more than one request" do
+ confirm(:admin_user)
+ admin = login(:admin_user)
+
+ ir1 = info_requests(:fancy_dog_request)
+ close_request(ir1)
+ ir1.incoming_messages.length.should == 1
+ ir2 = info_requests(:another_boring_request)
+ ir2.incoming_messages.length.should == 1
+
+ receive_incoming_mail('incoming-request-plain.email', ir1.incoming_email, "frob@nowhere.com")
+ InfoRequest.holding_pen_request.incoming_messages.length.should == 1
+
+ new_im = InfoRequest.holding_pen_request.incoming_messages[0]
+ post_params = {'redeliver_incoming_message_id' => new_im.id,
+ 'url_title' => "#{ir1.url_title},#{ir2.url_title}"}
+ admin.post '/en/admin/request/redeliver_incoming', post_params
+ ir1.reload
+ ir1.incoming_messages.length.should == 2
+ ir2.reload
+ ir2.incoming_messages.length.should == 2
+ admin.response.location.should == 'http://www.example.com/en/admin/request/show/106'
+ InfoRequest.holding_pen_request.incoming_messages.length.should == 0
+ end
+
end