|
| 1 | +RSpec.describe MiqRequest do |
| 2 | + let(:user) { FactoryBot.create(:user) } |
| 3 | + context "::Purging" do |
| 4 | + describe ".purge_by_date" do |
| 5 | + before do |
| 6 | + Timecop.freeze(7.months.ago) do |
| 7 | + @old_request = FactoryBot.create(:vm_migrate_request, :requester => user) |
| 8 | + FactoryBot.create(:miq_request_task, :miq_request => @old_request) |
| 9 | + parent_task = FactoryBot.create(:miq_request_task, :miq_request => @old_request) |
| 10 | + FactoryBot.create(:miq_request_task, :miq_request_task => parent_task) |
| 11 | + FactoryBot.create(:miq_approval, :miq_request => @old_request) |
| 12 | + FactoryBot.create(:request_log, :resource => @old_request) |
| 13 | + end |
| 14 | + |
| 15 | + Timecop.freeze(6.days.ago) do |
| 16 | + @new_request = FactoryBot.create(:vm_migrate_request, :requester => user) |
| 17 | + @new_parent_task = FactoryBot.create(:miq_request_task, :miq_request => @new_request) |
| 18 | + @new_child_task = FactoryBot.create(:miq_request_task, :miq_request_task => @new_parent_task) |
| 19 | + FactoryBot.create(:miq_approval, :miq_request => @new_request) |
| 20 | + FactoryBot.create(:request_log, :resource => @new_request) |
| 21 | + end |
| 22 | + end |
| 23 | + |
| 24 | + it "deletes rows and associated table rows, leaving only newer rows" do |
| 25 | + expect(described_class.all).to match_array([@old_request, @new_request]) |
| 26 | + expect(MiqRequestTask.count).to eq(5) |
| 27 | + described_class.purge_by_date(described_class.purge_date) |
| 28 | + |
| 29 | + expect(described_class.all).to match_array([@new_request]) |
| 30 | + expect(MiqRequestTask.all.pluck(:id)).to match_array([@new_parent_task.id, @new_child_task.id]) |
| 31 | + expect(MiqApproval.all.pluck(:id)).to match_array(@new_request.reload.miq_approval_ids) # there's a default approval created for each request, so just check ids |
| 32 | + expect(RequestLog.all.pluck(:id)).to eq(@new_request.request_log_ids) |
| 33 | + end |
| 34 | + end |
| 35 | + |
| 36 | + describe ".purge_timer" do |
| 37 | + it "queues the correct purge method" do |
| 38 | + EvmSpecHelper.local_miq_server |
| 39 | + described_class.purge_timer |
| 40 | + q = MiqQueue.first |
| 41 | + expect(q).to have_attributes(:class_name => described_class.name, :method_name => "purge_by_date") |
| 42 | + end |
| 43 | + end |
| 44 | + end |
| 45 | +end |
0 commit comments