From 1a854b89eca8b0dda3f6fc5632af68c99e77c4e3 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Thu, 15 May 2014 14:24:35 +1000 Subject: [PATCH] Sort enterprise relationships by enterprise name --- app/models/enterprise_relationship.rb | 5 +++++ spec/models/enterprise_relationship_spec.rb | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 spec/models/enterprise_relationship_spec.rb diff --git a/app/models/enterprise_relationship.rb b/app/models/enterprise_relationship.rb index 2cbda1511a..2afd8c8a3e 100644 --- a/app/models/enterprise_relationship.rb +++ b/app/models/enterprise_relationship.rb @@ -4,4 +4,9 @@ class EnterpriseRelationship < ActiveRecord::Base validates_presence_of :parent_id, :child_id validates_uniqueness_of :child_id, scope: :parent_id + + scope :with_enterprises, + joins('LEFT JOIN enterprises AS parent_enterprises ON parent_enterprises.id = enterprise_relationships.parent_id'). + joins('LEFT JOIN enterprises AS child_enterprises ON child_enterprises.id = enterprise_relationships.child_id') + scope :by_name, with_enterprises.order('parent_enterprises.name, child_enterprises.name') end diff --git a/spec/models/enterprise_relationship_spec.rb b/spec/models/enterprise_relationship_spec.rb new file mode 100644 index 0000000000..7cca07472e --- /dev/null +++ b/spec/models/enterprise_relationship_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe EnterpriseRelationship do + describe "scopes" do + it "sorts by parent, child enterprise name" do + e1 = create(:enterprise, name: 'A') + e2 = create(:enterprise, name: 'B') + e3 = create(:enterprise, name: 'C') + er1 = create(:enterprise_relationship, parent: e1, child: e3) + er2 = create(:enterprise_relationship, parent: e2, child: e1) + er3 = create(:enterprise_relationship, parent: e1, child: e2) + + EnterpriseRelationship.by_name.should == [er3, er1, er2] + end + end +end