David Chelimsky wrote: > Now this violates a principle that you shouldn't stub things on the > object you're spec'ing, but the alternative is to play with global > values, which violates other principles. This is the simplest way IMO. > But if you're concerned about internals of AR changing, you could do > this:
Since my library extends ActiveRecord::Base and its magic datetime columns I think that I should test that my extension does not change the anticipated behaviour of AR itself. However, default_timezone cannot be set on an instance of AR:Base insofar as I can tell. Further, setting the default_timezone on AR:Base itself does not appear to have any effect: [ "local", "utc" ].each do |tz| ActiveRecord::Base.default_timezone = tz @my_mage = Magik.new @my_mage.description = tz @my_mage.my_time_local = DateTime.now @my_mage.my_time_utc = DateTime.now.utc @my_mage.save! puts @my_mage.description end ... it "should set the UTC time (for _at/_on) correctly" do my_magic = Magik.find_by_description!("local") puts " " puts my_magic.description puts "Local: #{my_magic.my_time_local} = #{my_magic.my_time_local.to_f}" puts " now: #{Time.now} = #{Time.now.to_f}" puts " UTC: #{my_magic.my_time_utc} = #{my_magic.my_time_utc.to_f}" puts " now: #{Time.now.utc} = #{Time.now.utc.to_f}" my_magic = Magik.find_by_description!("utc") puts " " puts my_magic.description puts "Local: #{my_magic.my_time_local} = #{my_magic.my_time_local.to_f}" puts " now: #{Time.now} = #{Time.now.to_f}" puts " UTC: #{my_magic.my_time_utc} = #{my_magic.my_time_utc.to_f}" puts " now: #{Time.now.utc} = #{Time.now.utc.to_f}" Produces this: ..... local Local: Mon Feb 09 14:20:06 UTC 2009 = 1234189206.0 now: Mon Feb 09 14:20:06 -0500 2009 = 1234207206.77585 UTC: Mon Feb 09 19:20:06 UTC 2009 = 1234207206.0 now: Mon Feb 09 19:20:06 UTC 2009 = 1234207206.77609 utc Local: Mon Feb 09 14:20:06 UTC 2009 = 1234189206.0 now: Mon Feb 09 14:20:06 -0500 2009 = 1234207206.77807 UTC: Mon Feb 09 19:20:06 UTC 2009 = 1234207206.0 now: Mon Feb 09 19:20:06 UTC 2009 = 1234207206.7783 . Finished in 0.429892 seconds It seems that I am not overriding the AR:BASE.default_timezone setting since, as far as I can tell, the values stored are the same whatever value I set the default_tz to. Does anyone have a technique to accomplish this? -- Posted via http://www.ruby-forum.com/. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users