21 lines
		
	
	
		
			656 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			656 B
		
	
	
	
		
			Ruby
		
	
	
	
| shared_examples_for 'throttled touch' do
 | |
|   describe '#touch' do
 | |
|     it 'updates the updated_at timestamp' do
 | |
|       Timecop.freeze do
 | |
|         subject.touch
 | |
|         expect(subject.updated_at).to be_like_time(Time.zone.now)
 | |
|       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)
 | |
| 
 | |
|       Timecop.freeze(first_updated_at) { subject.touch }
 | |
|       Timecop.freeze(second_updated_at) { subject.touch }
 | |
| 
 | |
|       expect(subject.updated_at).to be_like_time(first_updated_at)
 | |
|     end
 | |
|   end
 | |
| end
 |