diff options
-rw-r--r-- | app/models/request_mailer.rb | 4 | ||||
-rw-r--r-- | config/routes.rb | 3 | ||||
-rw-r--r-- | spec/controllers/request_controller_spec.rb | 31 | ||||
-rw-r--r-- | spec/controllers/user_controller_spec.rb | 7 |
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 |