From d1d8c1ea1802205f419e12775f878480a46c6bf5 Mon Sep 17 00:00:00 2001 From: Keenan Brock Date: Thu, 2 Oct 2025 19:22:26 -0400 Subject: [PATCH] WIP: factory change removing abstract Vm Don't create entries in the database with parent abstract classes Avoid Infra or Vm -- instead do a vendor specific vm (would have preferred to use the dummy provider) --- spec/factories/vm_or_template.rb | 8 ++++---- spec/models/miq_report/generator_spec.rb | 4 +++- spec/models/vm_or_template_spec.rb | 12 ++++++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/spec/factories/vm_or_template.rb b/spec/factories/vm_or_template.rb index 3d6737378ae..bc005d89206 100644 --- a/spec/factories/vm_or_template.rb +++ b/spec/factories/vm_or_template.rb @@ -1,5 +1,5 @@ FactoryBot.define do - factory :vm_or_template do + factory :vm_or_template, :class => "ManageIQ::Providers::Vmware::InfraManager::Vm" do sequence(:name) { |n| "vm_#{seq_padded_for_sorting(n)}" } location { "unknown" } uid_ems { SecureRandom.uuid } @@ -12,13 +12,13 @@ end end - factory :template, :class => "MiqTemplate", :parent => :vm_or_template do + factory :template, :class => "ManageIQ::Providers::Vmware::InfraManager::Template", :parent => :vm_or_template do sequence(:name) { |n| "template_#{seq_padded_for_sorting(n)}" } template { true } raw_power_state { "never" } end - factory(:vm, :class => "Vm", :parent => :vm_or_template) + factory(:vm, :class => "ManageIQ::Providers::Vmware::InfraManager::Vm", :parent => :vm_or_template) factory(:vm_cloud, :class => "VmCloud", :parent => :vm) { cloud { true } } factory(:vm_infra, :class => "VmInfra", :parent => :vm) factory(:vm_server, :class => "VmServer", :parent => :vm) @@ -38,7 +38,7 @@ vendor { "openstack" } end - factory :miq_template do + factory :miq_template, :class => "ManageIQ::Providers::Vmware::InfraManager::Template" do name { "ubuntu-16.04-stable" } location { "Minneapolis, MN" } vendor { "openstack" } diff --git a/spec/models/miq_report/generator_spec.rb b/spec/models/miq_report/generator_spec.rb index c825601298a..1273f8f539b 100644 --- a/spec/models/miq_report/generator_spec.rb +++ b/spec/models/miq_report/generator_spec.rb @@ -73,10 +73,12 @@ FactoryBot.create(:template) # filtered out by report.where_clause vm = FactoryBot.create(:vm, :vendor => "redhat") + expect(vm.type).to match(/Vm/) + rpt = FactoryBot.create( :miq_report, :db => "VmOrTemplate", - :where_clause => ["vms.type = ?", "Vm"], + :where_clause => ["vms.type = ?", vm.type], :col_order => %w[id name host.name vendor] ) rpt.generate_table(:userid => @user.userid, :where_clause => {"vms.vendor" => "redhat"}) diff --git a/spec/models/vm_or_template_spec.rb b/spec/models/vm_or_template_spec.rb index a4dba49c687..bf47b48306d 100644 --- a/spec/models/vm_or_template_spec.rb +++ b/spec/models/vm_or_template_spec.rb @@ -56,7 +56,8 @@ end context "with attrs template => true, ems_id => nil, host_id => nil" do - let(:attrs) { {:template => true, :ems_id => nil, :host_id => nil} } + subject { FactoryBot.create(:miq_template, attrs) } + let(:attrs) { {:ems_id => nil, :host_id => nil} } it("is not #registered?") { expect(subject.registered?).to be false } it("is not in registered_vms") { expect(registered_vms).to_not include subject } @@ -64,7 +65,8 @@ end context "with attrs if template => true, ems_id => nil, host_id => [ID]" do - let(:attrs) { {:template => true, :ems_id => nil, :host_id => host.id} } + subject { FactoryBot.create(:miq_template, attrs) } + let(:attrs) { {:ems_id => nil, :host_id => host.id} } it("is not #registered?") { expect(subject.registered?).to be false } it("is not in registered_vms") { expect(registered_vms).to_not include subject } @@ -72,7 +74,8 @@ end context "with attrs if template => true, ems_id => [ID], host_id => nil" do - let(:attrs) { {:template => true, :ems_id => ems.id, :host_id => nil} } + subject { FactoryBot.create(:miq_template, attrs) } + let(:attrs) { {:ems_id => ems.id, :host_id => nil} } it("is not #registered?") { expect(subject.registered?).to be false } it("is not in registered_vms") { expect(registered_vms).to_not include subject } @@ -80,7 +83,8 @@ end context "with attrs if template => true, ems_id => [ID], host_id => [ID]" do - let(:attrs) { {:template => true, :ems_id => ems.id, :host_id => host.id} } + subject { FactoryBot.create(:miq_template, attrs) } + let(:attrs) { {:ems_id => ems.id, :host_id => host.id} } it("is #registered?") { expect(subject.registered?).to be true } it("is in registered_vms") { expect(registered_vms).to include subject }