Add age/expiry duration constants to BulkImport class (#32839)
				
					
				
			This commit is contained in:
		
							parent
							
								
									897cb1803e
								
							
						
					
					
						commit
						5d9dde3ec0
					
				| @ -9,10 +9,16 @@ class Vacuum::ImportsVacuum | ||||
|   private | ||||
| 
 | ||||
|   def clean_unconfirmed_imports! | ||||
|     BulkImport.state_unconfirmed.where(created_at: ..10.minutes.ago).in_batches.delete_all | ||||
|     BulkImport | ||||
|       .confirmation_missed | ||||
|       .in_batches | ||||
|       .delete_all | ||||
|   end | ||||
| 
 | ||||
|   def clean_old_imports! | ||||
|     BulkImport.where(created_at: ..1.week.ago).in_batches.delete_all | ||||
|     BulkImport | ||||
|       .archival_completed | ||||
|       .in_batches | ||||
|       .delete_all | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -21,6 +21,9 @@ | ||||
| class BulkImport < ApplicationRecord | ||||
|   self.inheritance_column = false | ||||
| 
 | ||||
|   ARCHIVE_PERIOD = 1.week | ||||
|   CONFIRM_PERIOD = 10.minutes | ||||
| 
 | ||||
|   belongs_to :account | ||||
|   has_many :rows, class_name: 'BulkImportRow', inverse_of: :bulk_import, dependent: :delete_all | ||||
| 
 | ||||
| @ -42,6 +45,9 @@ class BulkImport < ApplicationRecord | ||||
| 
 | ||||
|   validates :type, presence: true | ||||
| 
 | ||||
|   scope :archival_completed, -> { where(created_at: ..ARCHIVE_PERIOD.ago) } | ||||
|   scope :confirmation_missed, -> { state_unconfirmed.where(created_at: ..CONFIRM_PERIOD.ago) } | ||||
| 
 | ||||
|   def self.progress!(bulk_import_id, imported: false) | ||||
|     # Use `increment_counter` so that the incrementation is done atomically in the database | ||||
|     BulkImport.increment_counter(:processed_items, bulk_import_id) | ||||
|  | ||||
							
								
								
									
										42
									
								
								spec/models/bulk_import_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								spec/models/bulk_import_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | ||||
| # frozen_string_literal: true | ||||
| 
 | ||||
| require 'rails_helper' | ||||
| 
 | ||||
| RSpec.describe BulkImport do | ||||
|   describe 'Associations' do | ||||
|     it { is_expected.to belong_to(:account).required } | ||||
|     it { is_expected.to have_many(:rows).class_name('BulkImportRow').inverse_of(:bulk_import).dependent(:delete_all) } | ||||
|   end | ||||
| 
 | ||||
|   describe 'Validations' do | ||||
|     subject { Fabricate.build :bulk_import } | ||||
| 
 | ||||
|     it { is_expected.to validate_presence_of(:type) } | ||||
|   end | ||||
| 
 | ||||
|   describe 'Scopes' do | ||||
|     describe '.archival_completed' do | ||||
|       let!(:old_import) { Fabricate :bulk_import, created_at: 1.month.ago } | ||||
|       let!(:new_import) { Fabricate :bulk_import, created_at: 1.day.ago } | ||||
| 
 | ||||
|       it 'returns imports which have passed the archive window period' do | ||||
|         expect(described_class.archival_completed) | ||||
|           .to include(old_import) | ||||
|           .and not_include(new_import) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     describe '.confirmation_missed' do | ||||
|       let!(:old_unconfirmed_import) { Fabricate :bulk_import, created_at: 1.week.ago, state: :unconfirmed } | ||||
|       let!(:old_scheduled_import) { Fabricate :bulk_import, created_at: 1.week.ago, state: :scheduled } | ||||
|       let!(:new_unconfirmed_import) { Fabricate :bulk_import, created_at: 1.minute.ago, state: :unconfirmed } | ||||
| 
 | ||||
|       it 'returns imports which have passed the confirmation window without confirming' do | ||||
|         expect(described_class.confirmation_missed) | ||||
|           .to include(old_unconfirmed_import) | ||||
|           .and not_include(old_scheduled_import) | ||||
|           .and not_include(new_unconfirmed_import) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user