Skip to content

Commit

Permalink
Merge pull request #5496 from jrafanie/find_each_with_custom_select_n…
Browse files Browse the repository at this point in the history
…eeds_primary_key

find_each with a custom select needs the primary key
  • Loading branch information
chessbyte committed Nov 24, 2015
2 parents bae307b + 4373259 commit 5026527
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
4 changes: 2 additions & 2 deletions app/models/miq_cim_instance.rb
Expand Up @@ -224,15 +224,15 @@ def addAssociation(result_instance, assoc)
#
def getAssociators(association)
results = []
query = miq_cim_associations.scoped.includes(:result_instance).select(:result_instance_id)
query = miq_cim_associations.scoped.includes(:result_instance).select(:result_instance_id, :id)
query = query.where_association(association)
query.find_each { |a| results << a.result_instance }
results.uniq
end

def getAssociatedVmdbObjs(association)
results = []
query = miq_cim_associations.scoped.includes(:result_instance => :vmdb_obj).select(:result_instance_id)
query = miq_cim_associations.scoped.includes(:result_instance => :vmdb_obj).select(:result_instance_id, :id)
query = query.where_association(association)
query.find_each { |a| results << a.result_instance.vmdb_obj }
results.uniq
Expand Down
4 changes: 4 additions & 0 deletions spec/factories/miq_cim_association.rb
@@ -0,0 +1,4 @@
FactoryGirl.define do
factory :miq_cim_association do
end
end
4 changes: 4 additions & 0 deletions spec/factories/miq_cim_instance.rb
@@ -0,0 +1,4 @@
FactoryGirl.define do
factory :miq_cim_instance do
end
end
28 changes: 28 additions & 0 deletions spec/models/miq_cim_instance_spec.rb
@@ -0,0 +1,28 @@
require 'spec_helper'

describe MiqCimInstance do
before do
@instance1 = FactoryGirl.create(:miq_cim_instance)
attributes = {
:result_instance => @instance1,
:assoc_class => "A",
:role => "B",
:result_role => "C"
}
@cim_association = FactoryGirl.create(:miq_cim_association, attributes)
@instance2 = FactoryGirl.create(:miq_cim_instance, :miq_cim_associations => [@cim_association])
end

it "#getAssociators" do
expect(@instance2.getAssociators(:AssocClass => "A", :Role => "B", :ResultRole => "C")
.collect(&:id))
.to eq [@instance1.id]
end

it "#getAssociatedVmdbObjs" do
host = FactoryGirl.create(:host)
@instance1.update_attribute(:vmdb_obj, host)
expect(@instance2.getAssociatedVmdbObjs(:AssocClass => "A", :Role => "B", :ResultRole => "C"))
.to eq [host]
end
end

0 comments on commit 5026527

Please sign in to comment.