aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/request_mailer.rb4
-rw-r--r--config/routes.rb3
-rw-r--r--spec/controllers/request_controller_spec.rb31
-rw-r--r--spec/controllers/user_controller_spec.rb7
4 files changed, 38 insertions, 7 deletions
diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb
index 494beba16..aac250095 100644
--- a/app/models/request_mailer.rb
+++ b/app/models/request_mailer.rb
@@ -4,7 +4,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: request_mailer.rb,v 1.25 2008-02-29 16:00:29 francis Exp $
+# $Id: request_mailer.rb,v 1.26 2008-03-19 05:26:31 francis Exp $
class RequestMailer < ApplicationMailer
@@ -75,7 +75,7 @@ class RequestMailer < ApplicationMailer
@body = { :incoming_message => incoming_message, :info_request => info_request, :url => url }
end
- # Tell the requester that a new response has arrived
+ # Tell the requester that the public body is late in replying
def overdue_alert(info_request, user)
last_response = info_request.get_last_response
if last_response.nil?
diff --git a/config/routes.rb b/config/routes.rb
index 5d2fa4948..4945a8e49 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -4,9 +4,10 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: routes.rb,v 1.46 2008-03-13 11:29:47 francis Exp $
+# $Id: routes.rb,v 1.47 2008-03-19 05:26:31 francis Exp $
ActionController::Routing::Routes.draw do |map|
+
# The priority is based upon order of creation: first created -> highest priority.
# Sample of regular route:
diff --git a/spec/controllers/request_controller_spec.rb b/spec/controllers/request_controller_spec.rb
index d609840df..5b7da626e 100644
--- a/spec/controllers/request_controller_spec.rb
+++ b/spec/controllers/request_controller_spec.rb
@@ -153,7 +153,7 @@ describe RequestController, "when creating a new request" do
mail = deliveries[0]
mail.body.should =~ /This is a silly letter. It is too short to be interesting./
- response.should redirect_to(:controller => 'request', :action => 'show', :url_title => ir.url_title)
+ response.should redirect_to(:action => 'show', :url_title => ir.url_title)
end
it "should give an error if the same request is submitted twice" do
@@ -185,7 +185,7 @@ describe RequestController, "when creating a new request" do
ir.url_title.should_not == ir2.url_title
- response.should redirect_to(:controller => 'request', :action => 'show', :url_title => ir2.url_title)
+ response.should redirect_to(:action => 'show', :url_title => ir2.url_title)
end
end
@@ -225,7 +225,7 @@ describe RequestController, "when classifying an individual response" do
info_requests(:fancy_dog_request).awaiting_description.should == false
end
- #response.should redirect_to(:controller => 'request', :action => 'show', :id => info_requests(:fancy_dog_request))
+ #response.should redirect_to(:action => 'show', :id => info_requests(:fancy_dog_request))
#incoming_messages(:useless_incoming_message).user_classified.should == true
end
@@ -264,14 +264,37 @@ describe RequestController, "when sending a followup message" do
mail.body.should =~ /What a useless response! You suck./
mail.to_addrs.to_s.should == "FOI Person <foiperson@localhost>"
- response.should redirect_to(:controller => 'request', :action => 'show', :url_title => info_requests(:fancy_dog_request).url_title)
+ response.should redirect_to(:action => 'show', :url_title => info_requests(:fancy_dog_request).url_title)
end
end
+describe RequestController, "sending overdue request alerts" do
+ integrate_views
+ fixtures :info_requests, :info_request_events, :public_bodies, :users, :incoming_messages, :outgoing_messages # all needed as integrating views
+
+ it "should send an overdue alert mail to creators of overdue requests" do
+ RequestMailer.alert_overdue_requests
+ deliveries = ActionMailer::Base.deliveries
+ deliveries.size.should == 1
+ mail = deliveries[0]
+ mail.body.should =~ /20 working days/
+ mail.to_addrs.to_s.should == info_requests(:naughty_chicken_request).user.name_and_email
+
+ mail.body =~ /(http:\/\/.*\/c\/(.*))/
+ mail_url = $1
+ mail_token = $2
+
+ #session[:user_id].should be_nil
+ # XXX this is so dumb - I just want to call the user controller here, bloody let me
+ #get :controller => :user, :action => :confirm, :email_token => mail_token
+ #session[:user_id].should == info_requests(:naughty_chicken_request).user.id
+ #response.should redirect_to(:action => 'show_response', :id => info_requests(:naughty_chicken_request).id)
+ end
+end
diff --git a/spec/controllers/user_controller_spec.rb b/spec/controllers/user_controller_spec.rb
index 26d02615f..183c1c2eb 100644
--- a/spec/controllers/user_controller_spec.rb
+++ b/spec/controllers/user_controller_spec.rb
@@ -1,5 +1,8 @@
require File.dirname(__FILE__) + '/../spec_helper'
+# XXX Use route_for or params_from to check /c/ links better
+# http://rspec.info/rdoc-rails/classes/Spec/Rails/Example/ControllerExampleGroup.html
+
describe UserController, "when showing a user" do
integrate_views
fixtures :users, :outgoing_messages, :incoming_messages, :info_requests, :info_request_events
@@ -110,7 +113,11 @@ describe UserController, "when signing in" do
mail_url = $1
mail_token = $2
+ mail_token.should == post_redirect.email_token
+
+ session[:user_id].should be_nil
get :confirm, :email_token => post_redirect.email_token
+ session[:user_id].should == users(:silly_name_user).id
response.should redirect_to(:controller => 'request', :action => 'list', :post_redirect => 1)
end