aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Houston <robin.houston@gmail.com>2012-02-03 22:13:40 +0000
committerRobin Houston <robin.houston@gmail.com>2012-02-03 22:13:40 +0000
commit8584824006b987fb260636fe65ff525f3b2acf52 (patch)
treeed4255c5d237429d44ce27f52cdcee426de2c4de
parent37bbce024b1ea731fe964b9eaddfd75dd548daee (diff)
Test should not depend on nondeterministic order
Issue #409 seems to be another problem of the same type as #408, though with the important difference that the bug in this case is in the test suite rather than the code under test. RequestMailer sends alert emails warning of overdue requests. However it does not specify the order that these messages are sent in, but runs over the overdue requests in whatever order they are returned by a database query (that does not have an order by clause). Therefore it is not safe for the test code to assume that the alert mails will have been sent in a particular order: just as with #408 it seems that they were *usually* sent in the order assumed by the test code, but occasionally not -- which would result in sporadic test failures. Closes #409.
-rw-r--r--spec/controllers/request_controller_spec.rb21
1 files changed, 12 insertions, 9 deletions
diff --git a/spec/controllers/request_controller_spec.rb b/spec/controllers/request_controller_spec.rb
index 1211e03bb..9018f76fe 100644
--- a/spec/controllers/request_controller_spec.rb
+++ b/spec/controllers/request_controller_spec.rb
@@ -1319,9 +1319,10 @@ describe RequestController, "sending overdue request alerts" do
RequestMailer.alert_overdue_requests
- deliveries = ActionMailer::Base.deliveries
- deliveries.size.should == 2
- mail = deliveries[1]
+ chicken_mails = ActionMailer::Base.deliveries.select{|x| x.body =~ /chickens/}
+ chicken_mails.size.should == 1
+ mail = chicken_mails[0]
+
mail.body.should =~ /promptly, as normally/
mail.to_addrs.first.to_s.should == info_requests(:naughty_chicken_request).user.name_and_email
@@ -1347,9 +1348,10 @@ describe RequestController, "sending overdue request alerts" do
RequestMailer.alert_overdue_requests
- deliveries = ActionMailer::Base.deliveries
- deliveries.size.should == 2
- mail = deliveries[1]
+ chicken_mails = ActionMailer::Base.deliveries.select{|x| x.body =~ /chickens/}
+ chicken_mails.size.should == 1
+ mail = chicken_mails[0]
+
mail.body.should =~ /promptly, as normally/
mail.to_addrs.first.to_s.should == info_requests(:naughty_chicken_request).user.name_and_email
end
@@ -1372,9 +1374,10 @@ describe RequestController, "sending overdue request alerts" do
RequestMailer.alert_overdue_requests
- deliveries = ActionMailer::Base.deliveries
- deliveries.size.should == 2
- mail = deliveries[1]
+ chicken_mails = ActionMailer::Base.deliveries.select{|x| x.body =~ /chickens/}
+ chicken_mails.size.should == 1
+ mail = chicken_mails[0]
+
mail.body.should =~ /required by law/
mail.to_addrs.first.to_s.should == info_requests(:naughty_chicken_request).user.name_and_email