Commit beb338bc1d67f4fe2dcfd00eeec50c657c5c3f65
1 parent
a4aab71d
Exists in
master
and in
29 other branches
ActionItem466: making the proper fixes for PostgreSQL, which is not as
forgiving as SQLite git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2076 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
10 changed files
with
38 additions
and
45 deletions
Show diff stats
app/models/article.rb
... | ... | @@ -21,7 +21,7 @@ class Article < ActiveRecord::Base |
21 | 21 | |
22 | 22 | def add_category(c) |
23 | 23 | if self.id |
24 | - ArticleCategorization.create!(:category => c, :article => self) | |
24 | + ArticleCategorization.add_category_to_article(c, self) | |
25 | 25 | else |
26 | 26 | pending_categorizations << c |
27 | 27 | end |
... | ... | @@ -37,7 +37,7 @@ class Article < ActiveRecord::Base |
37 | 37 | after_create :create_pending_categorizations |
38 | 38 | def create_pending_categorizations |
39 | 39 | pending_categorizations.each do |item| |
40 | - ArticleCategorization.create!(:category => item, :article => self) | |
40 | + ArticleCategorization.add_category_to_article(item, self) | |
41 | 41 | end |
42 | 42 | pending_categorizations.clear |
43 | 43 | end | ... | ... |
app/models/article_categorization.rb
... | ... | @@ -3,13 +3,12 @@ class ArticleCategorization < ActiveRecord::Base |
3 | 3 | belongs_to :article |
4 | 4 | belongs_to :category |
5 | 5 | |
6 | - after_create :associate_with_entire_hierarchy | |
7 | - def associate_with_entire_hierarchy | |
8 | - return if virtual | |
6 | + def self.add_category_to_article(category, article) | |
7 | + connection.execute("insert into articles_categories (category_id, article_id) values(#{category.id}, #{article.id})") | |
9 | 8 | |
10 | 9 | c = category.parent |
11 | - while !c.nil? && !self.class.find(:first, :conditions => {:article_id => article, :category_id => c}) | |
12 | - self.class.create!(:article => article, :category => c, :virtual => true) | |
10 | + while !c.nil? && !self.find(:first, :conditions => {:article_id => article, :category_id => c}) | |
11 | + connection.execute("insert into articles_categories (category_id, article_id, virtual) values(#{c.id}, #{article.id}, 1>0)") | |
13 | 12 | c = c.parent |
14 | 13 | end |
15 | 14 | end | ... | ... |
app/models/profile.rb
... | ... | @@ -109,7 +109,7 @@ class Profile < ActiveRecord::Base |
109 | 109 | |
110 | 110 | def add_category(c) |
111 | 111 | if self.id |
112 | - ProfileCategorization.create!(:category => c, :profile => self) | |
112 | + ProfileCategorization.add_category_to_profile(c, self) | |
113 | 113 | else |
114 | 114 | pending_categorizations << c |
115 | 115 | end |
... | ... | @@ -125,7 +125,7 @@ class Profile < ActiveRecord::Base |
125 | 125 | after_create :create_pending_categorizations |
126 | 126 | def create_pending_categorizations |
127 | 127 | pending_categorizations.each do |item| |
128 | - ProfileCategorization.create!(:category => item, :profile => self) | |
128 | + ProfileCategorization.add_category_to_profile(item, self) | |
129 | 129 | end |
130 | 130 | pending_categorizations.clear |
131 | 131 | end | ... | ... |
app/models/profile_categorization.rb
... | ... | @@ -3,13 +3,13 @@ class ProfileCategorization < ActiveRecord::Base |
3 | 3 | belongs_to :profile |
4 | 4 | belongs_to :category |
5 | 5 | |
6 | - after_create :associate_with_entire_hierarchy | |
7 | - def associate_with_entire_hierarchy | |
8 | - return if virtual | |
6 | + def self.add_category_to_profile(category, profile) | |
7 | + | |
8 | + connection.execute("insert into categories_profiles (category_id, profile_id) values(#{category.id}, #{profile.id})") | |
9 | 9 | |
10 | 10 | c = category.parent |
11 | - while !c.nil? && !self.class.find(:first, :conditions => {:profile_id => profile, :category_id => c}) | |
12 | - self.class.create!(:profile => profile, :category => c, :virtual => true) | |
11 | + while !c.nil? && !self.find(:first, :conditions => {:profile_id => profile, :category_id => c}) | |
12 | + connection.execute("insert into categories_profiles (category_id, profile_id, virtual) values(#{c.id}, #{profile.id}, 1>0)") | |
13 | 13 | c = c.parent |
14 | 14 | end |
15 | 15 | end | ... | ... |
test/functional/search_controller_test.rb
... | ... | @@ -484,7 +484,7 @@ class SearchControllerTest < Test::Unit::TestCase |
484 | 484 | child = Category.create!(:name => 'Child Category', :environment => Environment.default, :parent => parent) |
485 | 485 | |
486 | 486 | p = create_user('test_profile').person |
487 | - p.categories << child | |
487 | + p.add_category child | |
488 | 488 | p.save! |
489 | 489 | |
490 | 490 | get :index, :category_path => ['parent-category'], :query => 'test_profile', :find_in => ['people'] |
... | ... | @@ -563,10 +563,10 @@ class SearchControllerTest < Test::Unit::TestCase |
563 | 563 | should 'display people with a given initial, under a specific category' do |
564 | 564 | |
565 | 565 | in_category_and_with_initial = create_user('fergunson').person |
566 | - in_category_and_with_initial.categories << @category | |
566 | + in_category_and_with_initial.add_category @category | |
567 | 567 | |
568 | 568 | in_category_but_without_initial = create_user('yanerson').person |
569 | - in_category_but_without_initial.categories << @category | |
569 | + in_category_but_without_initial.add_category @category | |
570 | 570 | |
571 | 571 | not_in_category_but_with_initial = create_user('fergy').person |
572 | 572 | not_in_category_and_without_initial = create_user('xalanxalan').person |
... | ... | @@ -580,8 +580,8 @@ class SearchControllerTest < Test::Unit::TestCase |
580 | 580 | end |
581 | 581 | |
582 | 582 | should 'display communities with a given initial, under a specific category' do |
583 | - c1 = Community.create!(:name => 'a beautiful community', :identifier => 'bea_comm', :environment => Environment.default); c1.categories << @category | |
584 | - c2 = Community.create!(:name => 'beautiful community (another)', :identifier => 'an_bea_comm', :environment => Environment.default); c2.categories << @category | |
583 | + c1 = Community.create!(:name => 'a beautiful community', :identifier => 'bea_comm', :environment => Environment.default); c1.add_category @category | |
584 | + c2 = Community.create!(:name => 'beautiful community (another)', :identifier => 'an_bea_comm', :environment => Environment.default); c2.add_category @category | |
585 | 585 | |
586 | 586 | c3 = Community.create!(:name => 'another beautiful community', :identifier => 'lalala', :environment => Environment.default); |
587 | 587 | c4 = Community.create!(:name => 'damn beautiful community (another)', :identifier => 'lelele', :environment => Environment.default) |
... | ... | @@ -595,8 +595,8 @@ class SearchControllerTest < Test::Unit::TestCase |
595 | 595 | end |
596 | 596 | |
597 | 597 | should 'display enterprises with a given initial, under a specific category' do |
598 | - ent1 = Enterprise.create!(:name => 'aaaaa', :identifier => 'teste1'); ent1.categories << @category | |
599 | - ent2 = Enterprise.create!(:name => 'bbbbb', :identifier => 'teste2'); ent1.categories << @category | |
598 | + ent1 = Enterprise.create!(:name => 'aaaaa', :identifier => 'teste1'); ent1.add_category @category | |
599 | + ent2 = Enterprise.create!(:name => 'bbbbb', :identifier => 'teste2'); ent1.add_category @category | |
600 | 600 | ent3 = Enterprise.create!(:name => 'aaaa1111', :identifier => 'teste1111') |
601 | 601 | ent4 = Enterprise.create!(:name => 'ddddd', :identifier => 'teste2222') |
602 | 602 | |
... | ... | @@ -611,9 +611,9 @@ class SearchControllerTest < Test::Unit::TestCase |
611 | 611 | should 'display articles with a given initial, under a specific category' do |
612 | 612 | person = create_user('teste').person |
613 | 613 | art1 = person.articles.build(:name => 'an article to be found'); art1.save! |
614 | - art1.categories << @category | |
614 | + art1.add_category @category | |
615 | 615 | art2 = person.articles.build(:name => 'better article'); art2.save! |
616 | - art2.categories << @category | |
616 | + art2.add_category @category | |
617 | 617 | |
618 | 618 | art3 = person.articles.build(:name => 'another article to be found'); art3.save! |
619 | 619 | art4 = person.articles.build(:name => 'damn article'); art4.save! | ... | ... |
test/unit/article_categorization_test.rb
... | ... | @@ -25,7 +25,7 @@ class ArticleCategorizationTest < Test::Unit::TestCase |
25 | 25 | a = p.articles.create!(:name => 'test') |
26 | 26 | |
27 | 27 | assert_difference ArticleCategorization, :count, 2 do |
28 | - ArticleCategorization.create!(:category => c2, :article => a) | |
28 | + ArticleCategorization.add_category_to_article(c2, a) | |
29 | 29 | end |
30 | 30 | |
31 | 31 | assert_equal 2, ArticleCategorization.find_all_by_article_id(a.id).size |
... | ... | @@ -40,8 +40,8 @@ class ArticleCategorizationTest < Test::Unit::TestCase |
40 | 40 | a = p.articles.create!(:name => 'test') |
41 | 41 | |
42 | 42 | assert_difference ArticleCategorization, :count, 3 do |
43 | - ac = ArticleCategorization.create!(:category => c2, :article => a) | |
44 | - ac = ArticleCategorization.create!(:category => c3, :article => a) | |
43 | + ArticleCategorization.add_category_to_article(c2, a) | |
44 | + ArticleCategorization.add_category_to_article(c3, a) | |
45 | 45 | end |
46 | 46 | end |
47 | 47 | |
... | ... | @@ -53,8 +53,8 @@ class ArticleCategorizationTest < Test::Unit::TestCase |
53 | 53 | p = create_user('testuser').person |
54 | 54 | a = p.articles.create!(:name => 'test') |
55 | 55 | |
56 | - ac = ArticleCategorization.create!(:category => c2, :article => a) | |
57 | - ac = ArticleCategorization.create!(:category => c3, :article => a) | |
56 | + ArticleCategorization.add_category_to_article(c2, a) | |
57 | + ArticleCategorization.add_category_to_article(c3, a) | |
58 | 58 | |
59 | 59 | assert_difference ArticleCategorization, :count, -3 do |
60 | 60 | ArticleCategorization.remove_all_for(a) | ... | ... |
test/unit/article_test.rb
... | ... | @@ -175,14 +175,8 @@ class ArticleTest < Test::Unit::TestCase |
175 | 175 | article = profile.articles.build(:name => 'withcategories') |
176 | 176 | article.save! |
177 | 177 | |
178 | - assert_raise ActiveRecord::AssociationTypeMismatch do | |
179 | - article.categories << 1 | |
180 | - end | |
181 | - | |
182 | - assert_nothing_raised do | |
183 | - article.categories << c1 | |
184 | - article.categories << c2 | |
185 | - end | |
178 | + article.add_category c1 | |
179 | + article.add_category c2 | |
186 | 180 | |
187 | 181 | assert_equivalent [c1,c2], article.categories(true) |
188 | 182 | end | ... | ... |
test/unit/category_test.rb
... | ... | @@ -312,9 +312,9 @@ class CategoryTest < Test::Unit::TestCase |
312 | 312 | should 'have people' do |
313 | 313 | c = @env.categories.build(:name => 'my category'); c.save! |
314 | 314 | p1 = create_user('testuser_1').person |
315 | - p1.categories << c | |
315 | + p1.add_category c | |
316 | 316 | p2 = create_user('testuser_2').person |
317 | - p2.categories << c | |
317 | + p2.add_category c | |
318 | 318 | assert_equal [p1, p2], c.people |
319 | 319 | end |
320 | 320 | ... | ... |
test/unit/profile_categorization_test.rb
... | ... | @@ -5,7 +5,7 @@ class ProfileCategorizationTest < ActiveSupport::TestCase |
5 | 5 | should 'have profile and category' do |
6 | 6 | person = create_user('test_user').person |
7 | 7 | cat = Environment.default.categories.build(:name => 'a category'); cat.save! |
8 | - person.categories << cat | |
8 | + person.add_category cat | |
9 | 9 | person.save! |
10 | 10 | assert_includes person.categories, cat |
11 | 11 | assert_includes cat.people, person |
... | ... | @@ -19,7 +19,7 @@ class ProfileCategorizationTest < ActiveSupport::TestCase |
19 | 19 | p = create_user('testuser').person |
20 | 20 | |
21 | 21 | assert_difference ProfileCategorization, :count, 2 do |
22 | - ProfileCategorization.create!(:category => c2, :profile => p) | |
22 | + ProfileCategorization.add_category_to_profile(c2, p) | |
23 | 23 | end |
24 | 24 | |
25 | 25 | assert_equal 2, ProfileCategorization.find_all_by_profile_id(p.id).size |
... | ... | @@ -33,8 +33,8 @@ class ProfileCategorizationTest < ActiveSupport::TestCase |
33 | 33 | p = create_user('testuser').person |
34 | 34 | |
35 | 35 | assert_difference ProfileCategorization, :count, 3 do |
36 | - ac = ProfileCategorization.create!(:category => c2, :profile => p) | |
37 | - ac = ProfileCategorization.create!(:category => c3, :profile => p) | |
36 | + ProfileCategorization.add_category_to_profile(c2, p) | |
37 | + ProfileCategorization.add_category_to_profile(c3, p) | |
38 | 38 | end |
39 | 39 | end |
40 | 40 | |
... | ... | @@ -45,8 +45,8 @@ class ProfileCategorizationTest < ActiveSupport::TestCase |
45 | 45 | |
46 | 46 | p = create_user('testuser').person |
47 | 47 | |
48 | - ac = ProfileCategorization.create!(:category => c2, :profile => p) | |
49 | - ac = ProfileCategorization.create!(:category => c3, :profile => p) | |
48 | + ProfileCategorization.add_category_to_profile(c2, p) | |
49 | + ProfileCategorization.add_category_to_profile(c3, p) | |
50 | 50 | |
51 | 51 | assert_difference ProfileCategorization, :count, -3 do |
52 | 52 | ProfileCategorization.remove_all_for(p) | ... | ... |
test/unit/profile_test.rb
... | ... | @@ -390,7 +390,7 @@ class ProfileTest < Test::Unit::TestCase |
390 | 390 | should 'have categories' do |
391 | 391 | c = Profile.create!(:name => 'my test profile', :identifier => 'mytestprofile') |
392 | 392 | cat = Environment.default.categories.build(:name => 'a category'); cat.save! |
393 | - c.categories << cat | |
393 | + c.add_category cat | |
394 | 394 | c.save! |
395 | 395 | assert_includes c.categories, cat |
396 | 396 | end | ... | ... |