mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-31 21:37:16 +00:00
EnterpriseRelationship.relatives can find activated enterprises only
This commit is contained in:
@@ -28,7 +28,7 @@ class EnterpriseRelationship < ActiveRecord::Base
|
||||
# Load an array of the relatives of each enterprise (ie. any enterprise related to it in
|
||||
# either direction). This array is split into distributors and producers, and has the format:
|
||||
# {enterprise_id => {distributors: [id, ...], producers: [id, ...]} }
|
||||
def self.relatives
|
||||
def self.relatives(activated_only=false)
|
||||
relationships = EnterpriseRelationship.includes(:child, :parent)
|
||||
relatives = {}
|
||||
|
||||
@@ -36,11 +36,15 @@ class EnterpriseRelationship < ActiveRecord::Base
|
||||
relatives[r.parent_id] ||= {distributors: [], producers: []}
|
||||
relatives[r.child_id] ||= {distributors: [], producers: []}
|
||||
|
||||
relatives[r.parent_id][:producers] << r.child_id if r.child.is_primary_producer
|
||||
relatives[r.parent_id][:distributors] << r.child_id if r.child.is_distributor
|
||||
if !activated_only || r.child.activated?
|
||||
relatives[r.parent_id][:producers] << r.child_id if r.child.is_primary_producer
|
||||
relatives[r.parent_id][:distributors] << r.child_id if r.child.is_distributor
|
||||
end
|
||||
|
||||
relatives[r.child_id][:producers] << r.parent_id if r.parent.is_primary_producer
|
||||
relatives[r.child_id][:distributors] << r.parent_id if r.parent.is_distributor
|
||||
if !activated_only || r.parent.activated?
|
||||
relatives[r.child_id][:producers] << r.parent_id if r.parent.is_primary_producer
|
||||
relatives[r.child_id][:distributors] << r.parent_id if r.parent.is_distributor
|
||||
end
|
||||
end
|
||||
|
||||
relatives
|
||||
|
||||
@@ -80,5 +80,15 @@ describe EnterpriseRelationship do
|
||||
{e1.id => {distributors: [e2.id], producers: [e2.id]},
|
||||
e2.id => {distributors: [], producers: [e1.id]}}
|
||||
end
|
||||
|
||||
it "finds inactive enterprises by default" do
|
||||
e1.update_attribute :confirmed_at, nil
|
||||
EnterpriseRelationship.relatives[e2.id][:producers].should == [e1.id]
|
||||
end
|
||||
|
||||
it "does not find inactive enterprises when requested" do
|
||||
e1.update_attribute :confirmed_at, nil
|
||||
EnterpriseRelationship.relatives(true)[e2.id][:producers].should be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user