Specs for cleanup workers (#3235)
* Add spec files for feed and media cleanup workers * Add coverage for feed and media cleanup schedulers * Clean up feed and media cleanup workers
This commit is contained in:
		
				
					committed by
					
						 Eugen Rochko
						Eugen Rochko
					
				
			
			
				
	
			
			
			
						parent
						
							4a4733b397
						
					
				
				
					commit
					ec34ec63b1
				
			| @@ -55,6 +55,7 @@ class MediaAttachment < ApplicationRecord | |||||||
|   validates :account, presence: true |   validates :account, presence: true | ||||||
|  |  | ||||||
|   scope :attached, -> { where.not(status_id: nil) } |   scope :attached, -> { where.not(status_id: nil) } | ||||||
|  |   scope :unattached, -> { where(status_id: nil) } | ||||||
|   scope :local, -> { where(remote_url: '') } |   scope :local, -> { where(remote_url: '') } | ||||||
|   default_scope { order(id: :asc) } |   default_scope { order(id: :asc) } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -35,6 +35,7 @@ | |||||||
|  |  | ||||||
| class User < ApplicationRecord | class User < ApplicationRecord | ||||||
|   include Settings::Extend |   include Settings::Extend | ||||||
|  |   ACTIVE_DURATION = 14.days | ||||||
|  |  | ||||||
|   devise :registerable, :recoverable, |   devise :registerable, :recoverable, | ||||||
|          :rememberable, :trackable, :validatable, :confirmable, |          :rememberable, :trackable, :validatable, :confirmable, | ||||||
| @@ -51,6 +52,7 @@ class User < ApplicationRecord | |||||||
|   scope :recent,    -> { order(id: :desc) } |   scope :recent,    -> { order(id: :desc) } | ||||||
|   scope :admins,    -> { where(admin: true) } |   scope :admins,    -> { where(admin: true) } | ||||||
|   scope :confirmed, -> { where.not(confirmed_at: nil) } |   scope :confirmed, -> { where.not(confirmed_at: nil) } | ||||||
|  |   scope :inactive, -> { where(arel_table[:current_sign_in_at].lt(ACTIVE_DURATION.ago)) } | ||||||
|  |  | ||||||
|   before_validation :sanitize_languages |   before_validation :sanitize_languages | ||||||
|  |  | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ class Scheduler::FeedCleanupScheduler | |||||||
|   private |   private | ||||||
|  |  | ||||||
|   def inactive_users |   def inactive_users | ||||||
|     User.confirmed.where('current_sign_in_at < ?', 14.days.ago) |     User.confirmed.inactive | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   def redis |   def redis | ||||||
|   | |||||||
| @@ -12,6 +12,6 @@ class Scheduler::MediaCleanupScheduler | |||||||
|   private |   private | ||||||
|  |  | ||||||
|   def unattached_media |   def unattached_media | ||||||
|     MediaAttachment.reorder(nil).where(status_id: nil).where('created_at < ?', 1.day.ago) |     MediaAttachment.reorder(nil).unattached.where('created_at < ?', 1.day.ago) | ||||||
|   end |   end | ||||||
| end | end | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								spec/workers/scheduler/feed_cleanup_scheduler_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								spec/workers/scheduler/feed_cleanup_scheduler_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | require 'rails_helper' | ||||||
|  |  | ||||||
|  | describe Scheduler::FeedCleanupScheduler do | ||||||
|  |   subject { described_class.new } | ||||||
|  |  | ||||||
|  |   let!(:active_user) { Fabricate(:user, current_sign_in_at: 2.days.ago) } | ||||||
|  |   let!(:inactive_user) { Fabricate(:user, current_sign_in_at: 22.days.ago) } | ||||||
|  |  | ||||||
|  |   it 'clears feeds of inactives' do | ||||||
|  |     expect_any_instance_of(Redis).to receive(:del).with(feed_key_for(inactive_user)) | ||||||
|  |     expect_any_instance_of(Redis).not_to receive(:del).with(feed_key_for(active_user)) | ||||||
|  |  | ||||||
|  |     subject.perform | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def feed_key_for(user) | ||||||
|  |     FeedManager.instance.key(:home, user.account_id) | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										15
									
								
								spec/workers/scheduler/media_cleanup_scheduler_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								spec/workers/scheduler/media_cleanup_scheduler_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | require 'rails_helper' | ||||||
|  |  | ||||||
|  | describe Scheduler::MediaCleanupScheduler do | ||||||
|  |   subject { described_class.new } | ||||||
|  |  | ||||||
|  |   let!(:old_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) } | ||||||
|  |   let!(:new_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) } | ||||||
|  |  | ||||||
|  |   it 'removes old media records' do | ||||||
|  |     subject.perform | ||||||
|  |  | ||||||
|  |     expect { old_media.reload }.to raise_error(ActiveRecord::RecordNotFound) | ||||||
|  |     expect(new_media.reload).to be_persisted | ||||||
|  |   end | ||||||
|  | end | ||||||
		Reference in New Issue
	
	Block a user