Commit 5f0d0a34bcd3e0d2ee7dc0afa42738d56b4e8dd4

Authored by Antonio Terceiro
1 parent 6a7965a4

Do not list regions with validators multiple times

(ActionItem1482)
app/models/region.rb
... ... @@ -16,7 +16,7 @@ class Region < Category
16 16 end
17 17  
18 18 def self.with_validators
19   - Region.find(:all, :joins => 'INNER JOIN region_validators on (region_validators.region_id = categories.id)')
  19 + Region.find(:all, :joins => 'INNER JOIN region_validators on (region_validators.region_id = categories.id)', :select => "distinct #{table_name}.*")
20 20 end
21 21  
22 22 end
... ...
test/unit/region_test.rb
... ... @@ -55,13 +55,18 @@ class RegionTest < Test::Unit::TestCase
55 55  
56 56 should 'list regions with validators' do
57 57 bahia = fast_create(Region, :name => 'Bahia')
58   - forum_ecosol_ba = fast_create(Enterprise, :name => 'Forum Baiano de Economia Solidaria', :identifier => 'ecosol-ba')
59   - bahia.validators << forum_ecosol_ba
  58 + bahia.validators << fast_create(Enterprise, :name => 'Forum Baiano de Economia Solidaria', :identifier => 'ecosol-ba')
60 59  
61 60 sergipe = fast_create(Region, :name => 'Sergipe')
62 61 # Sergipe has no validators
63 62  
64   - assert_equivalent Region.with_validators, [bahia]
  63 + assert_equivalent [bahia], Region.with_validators
  64 + end
  65 +
  66 + should 'list each region with validatores only once' do
  67 + bahia = fast_create(Region, :name => 'Bahia')
  68 + 2.times { |i| bahia.validators << fast_create(Enterprise, :name => "validator #{i}", :identifier => "validator-#{i}")}
  69 + assert_equal [bahia], Region.with_validators
65 70 end
66 71  
67 72 end
... ...