aboutsummaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2013-09-17 17:04:27 +0100
committerLouise Crow <louise.crow@gmail.com>2013-09-17 17:04:37 +0100
commit09d6cc3313b9ec1f495ff09c74fe91e1b667f8b9 (patch)
tree713e2b7695776dd2679bf1a8ac74753a137520db /vendor
parent96b5229241f09f7d35c306d457f36ab2ffdad3b5 (diff)
Add a failing spec for handling a race condition
The spec uses a hook method to simulate the insertion of an acts_as_xapian_job in another process for the model. Credit to: http://stackoverflow.com/questions/2017587/simulating-race-conditions-in-rspec-unit-tests Conflicts: vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
Diffstat (limited to 'vendor')
-rw-r--r--vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
index e3659b629..a4447371e 100644
--- a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
+++ b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
@@ -929,11 +929,17 @@ module ActsAsXapian
def xapian_create_job(action, model, model_id)
ActiveRecord::Base.transaction do
ActsAsXapianJob.delete_all([ "model = ? and model_id = ?", model, model_id])
+ xapian_before_create_job_hook(action, model, model_id)
ActsAsXapianJob.create!(:model => model,
:model_id => model_id,
:action => action)
end
end
+
+ # A hook method that can be used in tests to simulate e.g. an external process inserting a record
+ def xapian_before_create_job_hook(action, model, model_id)
+ end
+
end
######################################################################