2019-10-12 21:52:04 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2020-03-13 15:44:24 +05:30
|
|
|
RSpec.shared_examples 'throttled touch' do
|
2018-03-17 18:26:18 +05:30
|
|
|
describe '#touch' do
|
|
|
|
it 'updates the updated_at timestamp' do
|
2020-11-24 15:15:51 +05:30
|
|
|
freeze_time do
|
2018-03-17 18:26:18 +05:30
|
|
|
subject.touch
|
2018-11-08 19:23:39 +05:30
|
|
|
expect(subject.updated_at).to be_like_time(Time.zone.now)
|
2018-03-17 18:26:18 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'updates the object at most once per minute' do
|
|
|
|
first_updated_at = Time.zone.now - (ThrottledTouch::TOUCH_INTERVAL * 2)
|
|
|
|
second_updated_at = Time.zone.now - (ThrottledTouch::TOUCH_INTERVAL * 1.5)
|
|
|
|
|
2021-01-03 14:25:43 +05:30
|
|
|
travel_to(first_updated_at) { subject.touch }
|
|
|
|
travel_to(second_updated_at) { subject.touch }
|
2018-03-17 18:26:18 +05:30
|
|
|
|
2018-11-08 19:23:39 +05:30
|
|
|
expect(subject.updated_at).to be_like_time(first_updated_at)
|
2018-03-17 18:26:18 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|