I am writing a unit test to check whether 24 hours have passed. If 24 hours have passed then it should return true
here is my attempt
test "messenger tag is more than 24 hours" do
Timecop.travel 2.days.ago
account = accounts(:messenger_v2)
contact_d = Contact.create! account: account, name: 'Mr Right', phone_number: nil, external_id: '155581474881005', contact_type: 'MessengerV2', source: 'Inbound', is_registered: true, primary_contact: true
conversation = Conversation.create! contact: contact_d, account: account, status: 'Open', unread: true, conversation_type: 'Private'
Message.create! contact: contact_d, message_type: 'Text', text: 'I have some enquries', direction: 'IN', account: account, conversation: conversation, external_id: "in_a#{Time.now.to_i.to_s}"
msg = conversation.messages.incoming
time_created = msg.last.created_at
messenger_tags = time_created < 24.hours.ago
assert_equal true, messenger_tags
end
when I run the test here is the output
test_messenger_tag_is_more_than_24_hours FAIL (0.14s)
Expected: true
Actual: false
test/models/message_test.rb:175:in `block in <class:MessageTest>'
kindly assist
you need to
turn off TimecopusingTimecop.returnonce the message is created.Update Or you can block to
Timecop.travel, to avoid callingTimecop.returnmentioned by @Stefan in the below comment