diff --git a/app/models/profile_categorization.rb b/app/models/profile_categorization.rb index bcf8706..4234fb1 100644 --- a/app/models/profile_categorization.rb +++ b/app/models/profile_categorization.rb @@ -13,7 +13,7 @@ class ProfileCategorization < ActiveRecord::Base end def self.remove_region(profile) - region = profile.categories.find(:first, :conditions => "type = 'Region'") + region = profile.categories.find(:first, :conditions => { :type => [Region, State, City].map(&:name) }) if region ids = region.hierarchy.map(&:id) self.delete_all(:profile_id => profile.id, :category_id => ids) diff --git a/test/unit/profile_categorization_test.rb b/test/unit/profile_categorization_test.rb index 2827dc1..a4e5ac1 100644 --- a/test/unit/profile_categorization_test.rb +++ b/test/unit/profile_categorization_test.rb @@ -53,4 +53,17 @@ class ProfileCategorizationTest < ActiveSupport::TestCase end end + [ Region, State, City ].each do |klass| + should "be able to remove #{klass.name} from profile" do + region = klass.create!(:name => 'my region', :environment => Environment.default) + p = create_user('testuser').person + p.region = region + p.save! + + ProfileCategorization.remove_region(p) + + assert_equal [], p.categories(true) + end + end + end -- libgit2 0.21.2