Initial commit
This commit is contained in:
49
spec/lib/tasks/job_spec.rb
Normal file
49
spec/lib/tasks/job_spec.rb
Normal file
@@ -0,0 +1,49 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
describe 'job.rake' do
|
||||
context "Rake::Task['job:liabilities:compact_orders']" do
|
||||
let(:member1) { create(:member) }
|
||||
let(:member2) { create(:member) }
|
||||
let(:job) { Job.last }
|
||||
let!(:liabilities) do
|
||||
(0..9).to_a.reverse.each do |day|
|
||||
100.times { create(:liability, member_id: [member1.id, member2.id].sample, created_at: Time.now - day.day, updated_at: Time.now - day.day) }
|
||||
end
|
||||
end
|
||||
|
||||
subject { Rake::Task['job:liabilities:compact_orders'] }
|
||||
|
||||
before(:each) { DatabaseCleaner.clean }
|
||||
after(:each) do
|
||||
DatabaseCleaner.strategy = :truncation
|
||||
subject.reenable
|
||||
end
|
||||
|
||||
it 'call rake task with default time range', clean_database_with_truncation: true do
|
||||
# default values
|
||||
min = (Time.now - 1.week).beginning_of_day.to_s(:db)
|
||||
max = (Time.now - 6.day).beginning_of_day.to_s(:db)
|
||||
|
||||
counter = Operations::Liability.where("LOWER(reference_type) = LOWER('Order') AND created_at BETWEEN '#{min}' AND '#{max}'").count
|
||||
result = ActiveRecord::Base.connection.query("SELECT NULL, code, currency_id, member_id, SUM(debit), SUM(credit) FROM liabilities WHERE (LOWER(reference_type) = LOWER('Order') AND created_at BETWEEN '#{min}' AND '#{max}') GROUP BY code, member_id, currency_id, DATE(created_at)")
|
||||
subject.invoke
|
||||
expect(job.name).to eq('compact_orders')
|
||||
expect(job.counter).to eq(counter)
|
||||
expect(job.error_code).to eq(0)
|
||||
expect(Operations::Liability.where(reference_type: 'CompactOrders').count).to eq(result.count)
|
||||
end
|
||||
|
||||
it 'call rake task with time range', clean_database_with_truncation: true do
|
||||
min = (Time.now - 2.day).beginning_of_day.to_s(:db)
|
||||
max = (Time.now - 1.day).beginning_of_day.to_s(:db)
|
||||
|
||||
counter = Operations::Liability.where("LOWER(reference_type) = LOWER('Order') AND created_at BETWEEN '#{min}' AND '#{max}'").count
|
||||
result = ActiveRecord::Base.connection.query("SELECT NULL, code, currency_id, member_id, SUM(debit), SUM(credit) FROM liabilities WHERE (LOWER(reference_type) = LOWER('Order') AND created_at BETWEEN '#{min}' AND '#{max}') GROUP BY code, member_id, currency_id, DATE(created_at)")
|
||||
subject.invoke(min, max)
|
||||
expect(job.name).to eq('compact_orders')
|
||||
expect(job.counter).to eq(counter)
|
||||
expect(job.error_code).to eq(0)
|
||||
expect(Operations::Liability.where(reference_type: 'CompactOrders').count).to eq(result.count)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user