From 5f0d0a34bcd3e0d2ee7dc0afa42738d56b4e8dd4 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Fri, 16 Apr 2010 09:50:35 -0300 Subject: [PATCH] Do not list regions with validators multiple times --- app/models/region.rb | 2 +- test/unit/region_test.rb | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) 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