diff --git a/app/models/region.rb b/app/models/region.rb index 03e5ea4..f86cb91 100644 --- a/app/models/region.rb +++ b/app/models/region.rb @@ -16,7 +16,7 @@ class Region < Category end def self.with_validators - Region.find(:all, :joins => 'INNER JOIN region_validators on (region_validators.region_id = categories.id)') + Region.find(:all, :joins => 'INNER JOIN region_validators on (region_validators.region_id = categories.id)', :select => "distinct #{table_name}.*") end end diff --git a/test/unit/region_test.rb b/test/unit/region_test.rb index aad03a9..16b6896 100644 --- a/test/unit/region_test.rb +++ b/test/unit/region_test.rb @@ -55,13 +55,18 @@ class RegionTest < Test::Unit::TestCase should 'list regions with validators' do bahia = fast_create(Region, :name => 'Bahia') - forum_ecosol_ba = fast_create(Enterprise, :name => 'Forum Baiano de Economia Solidaria', :identifier => 'ecosol-ba') - bahia.validators << forum_ecosol_ba + bahia.validators << fast_create(Enterprise, :name => 'Forum Baiano de Economia Solidaria', :identifier => 'ecosol-ba') sergipe = fast_create(Region, :name => 'Sergipe') # Sergipe has no validators - assert_equivalent Region.with_validators, [bahia] + assert_equivalent [bahia], Region.with_validators + end + + should 'list each region with validatores only once' do + bahia = fast_create(Region, :name => 'Bahia') + 2.times { |i| bahia.validators << fast_create(Enterprise, :name => "validator #{i}", :identifier => "validator-#{i}")} + assert_equal [bahia], Region.with_validators end end -- libgit2 0.21.2