paper-trail-gem--paper_trail/test/functional/thread_safety_test.rb

49 lines
1.1 KiB
Ruby
Raw Normal View History

2010-03-19 14:19:01 +00:00
require 'test_helper'
2010-03-04 00:45:33 +00:00
2011-02-08 17:16:35 +00:00
class ThreadSafetyTest < ActionController::TestCase
test "be thread safe when using #set_paper_trail_whodunnit" do
2010-03-04 00:45:33 +00:00
blocked = true
2010-03-19 14:19:01 +00:00
slow_thread = Thread.new do
2010-03-04 00:45:33 +00:00
controller = TestController.new
controller.send :set_paper_trail_whodunnit
2010-03-04 00:45:33 +00:00
begin
2010-03-19 14:19:01 +00:00
sleep 0.001
2010-03-04 00:45:33 +00:00
end while blocked
PaperTrail.whodunnit
end
2010-03-19 14:19:01 +00:00
fast_thread = Thread.new do
2010-03-04 00:45:33 +00:00
controller = TestController.new
controller.send :set_paper_trail_whodunnit
2010-03-19 14:19:01 +00:00
who = PaperTrail.whodunnit
2010-03-04 00:45:33 +00:00
blocked = false
2010-03-19 14:19:01 +00:00
who
2010-03-04 00:45:33 +00:00
end
2010-03-19 14:19:01 +00:00
assert_not_equal slow_thread.value, fast_thread.value
2010-03-04 00:45:33 +00:00
end
test "be thread safe when using #without_versioning" do
enabled = nil
slow_thread = Thread.new do
Widget.new.without_versioning do
sleep(0.01)
enabled = Widget.paper_trail_enabled_for_model?
sleep(0.01)
end
enabled
end
fast_thread = Thread.new do
sleep(0.005)
Widget.paper_trail_enabled_for_model?
end
assert_not_equal slow_thread.value, fast_thread.value
assert Widget.paper_trail_enabled_for_model?
assert PaperTrail.enabled_for_model?(Widget)
end
2010-03-19 14:19:01 +00:00
end