Rails 4.2 & travel_to is not working

Hi!

I have two projects running Rails 4.2 and using travel_to
from ActiveSupport::Testing::TimeHelpers.

In one project everything is working perfectly. But in the second one,
my
specs are running with the current date/time instead of using travel_to.
Here is one example:

it “is only a travel_to test” do
travel_to Time.new(2012, 1, 1, 1, 1, 1) do
expect(Time.new).to eq Time.new(2012, 1, 1, 1, 1, 1)
end
end

I’ve already set the rails_helper.rb with:

RSpec.configure do |config|

config.include ActiveSupport::Testing::TimeHelpers
end

Does anyone know what’s going on?

Thanks.

On 18 February 2015 at 01:03, Cezinha A. [email protected]
wrote:

travel_to Time.new(2012, 1, 1, 1, 1, 1) do

Does anyone know what’s going on?

What do Time.current and Time.now give you inside the block?

Colin

Bingo!

It’s returning the “travel_to” time.

Do you know why?

Thanks A LOT!!!

Em Wed Feb 18 2015 at 7:20:47 AM, Colin L. [email protected]
escreveu:

On 18 February 2015 at 11:03, Cezinha - ASSEINFO [email protected]
wrote:

Bingo!

It’s returning the “travel_to” time.

Do you know why?

Can you point to some documentation that says that Time.new()
initialises to current? I could not find any.

Colin

You can find here:

new → time

new(year, month=nil, day=nil, hour=nil, min=nil, sec=nil,
utc_offset=nil)
→ time

Returns a Time http://ruby-doc.org//core-2.2.0/Time.html object.

It is initialized to the current system time if no argument is given.

a = Time.new #=> 2007-11-19 07:50:02 -0600

Thanks.

Em Wed Feb 18 2015 at 9:09:31 AM, Colin L. [email protected]
escreveu:

On Tue, Feb 17, 2015 at 5:03 PM, Cezinha A. [email protected]
wrote:

I have two projects running Rails 4.2 and using travel_to from
ActiveSupport::Testing::TimeHelpers.

it “is only a travel_to test” do
travel_to Time.new(2012, 1, 1, 1, 1, 1) do
expect(Time.new).to eq Time.new(2012, 1, 1, 1, 1, 1)
end
end

From the doc for travel_to
Changes current time to the given time by stubbing Time.now and
Date.today to return the time or date passed into this method.

If you change your test to expect(Time.now).to ... it will pass.

HTH,

Hassan S. ------------------------ [email protected]

twitter: @hassan
Consulting Availability : Silicon Valley or remote

On 18 February 2015 at 12:23, Colin L. [email protected] wrote:

Returns a Time object.

It is initialized to the current system time if no argument is given.

a = Time.new #=> 2007-11-19 07:50:02 -0600

Yes, you are right, and since that document also says that Time.now is
an alias for this, and the docs for travel_to states that Time.now
should get the travel_to time (have you tried Time.now in the block?)
then it looks like you have found a bug.

I think I have to retract this, since the docs for travel_to state
that Time.now and Time.current are stubbed then it means that Time.now
is no longer an alias for Time.new(), so there is no guarantee that
Time.new() will respect travel_to.

Colin

On 18 February 2015 at 12:04, Cezinha - ASSEINFO [email protected]
wrote:

It is initialized to the current system time if no argument is given.

a = Time.new #=> 2007-11-19 07:50:02 -0600

Yes, you are right, and since that document also says that Time.now is
an alias for this, and the docs for travel_to states that Time.now
should get the travel_to time (have you tried Time.now in the block?)
then it looks like you have found a bug.

Colin

Hi!

I changed my code to use Time.now instead of Time.new and now everything
is
ok.

Do you know where can I check if this bugs is reported and if no… to
report?

Thanks.

Em Wed Feb 18 2015 at 12:03:06 PM, Colin L. [email protected]
escreveu:

On 18 February 2015 at 14:41, Cezinha - ASSEINFO [email protected]
wrote:

Hi!

I changed my code to use Time.now instead of Time.new and now everything is
ok.

Do you know where can I check if this bugs is reported and if no… to
report?

Probably our posts crossed, see my last email for reason why I don’t
think this is a bug.

Colin