Commit 61c01f54a07bab1c8605f30e7a033a0e1ea3d2e3

Authored by Rodrigo Souto
1 parent dae370c6

rails3: fix category tests

PS: still with failing tests
app/models/category.rb
... ... @@ -77,7 +77,7 @@ class Category < ActiveRecord::Base
77 77 end
78 78  
79 79 def recent_comments(limit = 10)
80   - comments.paginate(:all, :order => 'created_at DESC, comments.id DESC', :page => 1, :per_page => limit)
  80 + comments.paginate(:order => 'created_at DESC, comments.id DESC', :page => 1, :per_page => limit)
81 81 end
82 82  
83 83 def most_commented_articles(limit = 10)
... ...
test/unit/category_test.rb
... ... @@ -33,61 +33,61 @@ class CategoryTest < ActiveSupport::TestCase
33 33 end
34 34  
35 35 def test_category_full_name
36   - cat = Category.new(:name => 'category_name')
  36 + cat = build(Category, :name => 'category_name')
37 37 assert_equal 'category_name', cat.full_name
38 38 end
39 39  
40 40 def test_subcategory_full_name
41   - cat = Category.new(:name => 'category_name')
42   - sub_cat = Category.new(:name => 'subcategory_name')
  41 + cat = build(Category, :name => 'category_name')
  42 + sub_cat = build(Category, :name => 'subcategory_name')
43 43 sub_cat.stubs(:parent).returns(cat)
44 44 sub_cat.parent = cat
45 45 assert_equal 'category_name/subcategory_name', sub_cat.full_name
46 46 end
47 47  
48 48 should 'cope with nil name when calculating full_name' do
49   - cat = Category.new(:name => 'toplevel')
  49 + cat = build(Category, :name => 'toplevel')
50 50 sub = Category.new
51 51 sub.parent = cat
52 52 assert_equal 'toplevel/?', sub.full_name
53 53 end
54 54  
55 55 def test_category_level
56   - cat = Category.new(:name => 'category_name')
  56 + cat = build(Category, :name => 'category_name')
57 57 assert_equal 0, cat.level
58 58 end
59 59  
60 60 def test_subegory_level
61   - cat = Category.new(:name => 'category_name')
62   - sub_cat = Category.new(:name => 'subcategory_name')
  61 + cat = build(Category, :name => 'category_name')
  62 + sub_cat = build(Category, :name => 'subcategory_name')
63 63 sub_cat.stubs(:parent).returns(cat)
64 64 sub_cat.parent = cat
65 65 assert_equal 1, sub_cat.level
66 66 end
67 67  
68 68 def test_top_level
69   - cat = Category.new(:name => 'category_name')
  69 + cat = build(Category, :name => 'category_name')
70 70 assert cat.top_level?
71 71 end
72 72  
73 73 def test_not_top_level
74   - cat = Category.new(:name => 'category_name')
75   - sub_cat = Category.new(:name => 'subcategory_name')
  74 + cat = build(Category, :name => 'category_name')
  75 + sub_cat = build(Category, :name => 'subcategory_name')
76 76 sub_cat.stubs(:parent).returns(cat)
77 77 sub_cat.parent = cat
78 78 assert !sub_cat.top_level?
79 79 end
80 80  
81 81 def test_leaf
82   - cat = Category.new(:name => 'category_name')
83   - sub_cat = Category.new(:name => 'subcategory_name')
  82 + cat = build(Category, :name => 'category_name')
  83 + sub_cat = build(Category, :name => 'subcategory_name')
84 84 cat.stubs(:children).returns([sub_cat])
85 85 assert !cat.leaf?
86 86 end
87 87  
88 88 def test_not_leaf
89   - cat = Category.new(:name => 'category_name')
90   - sub_cat = Category.new(:name => 'subcategory_name')
  89 + cat = build(Category, :name => 'category_name')
  90 + sub_cat = build(Category, :name => 'subcategory_name')
91 91 cat.stubs(:children).returns([])
92 92 assert cat.leaf?
93 93 end
... ... @@ -102,38 +102,35 @@ class CategoryTest < ActiveSupport::TestCase
102 102 end
103 103  
104 104 def test_slug
105   - c = Category.new(:name => 'Category name')
106   - assert_equal 'category-name', c.slug
  105 + c = build(Category)
  106 + assert_equal c.name.to_slug, c.slug
107 107 end
108 108  
109 109 def test_path_for_toplevel
110   - c = Category.new(:name => 'top_level')
111   - assert_equal 'top-level', c.path
  110 + c = build(Category)
  111 + assert_equal c.slug, c.path
112 112 end
113 113  
114 114 def test_path_for_subcategory
115   - c1 = Category.new(:name => 'parent')
  115 + parent = create(Category)
  116 + child = create(Category, :parent => parent)
116 117  
117   - c2 = Category.new
118   - c2.parent = c1
119   - c2.name = 'child'
120   -
121   - assert_equal 'parent/child', c2.path
  118 + assert_equal "#{parent.path}/#{child.slug}", child.path
122 119 end
123 120  
124 121 def test_should_set_path_correctly_before_saving
125   - c1 = Category.create!(:name => 'parent', :environment_id => @env.id)
  122 + parent = create(Category, :environment_id => @env.id)
126 123  
127   - c2 = Category.new(:name => 'child', :environment_id => @env.id)
128   - c2.parent = c1
129   - c2.save!
  124 + child = build(Category, :environment_id => @env.id)
  125 + child.parent = parent
  126 + child.save!
130 127  
131   - assert_equal 'parent/child', c2.path
  128 + assert_equal "#{parent.path}/#{child.slug}", child.path
132 129 end
133 130  
134 131 def test_should_refuse_to_duplicate_slug_under_the_same_parent
135   - c1 = Category.create!(:name => 'test category', :environment_id => @env.id)
136   - c2 = Category.new(:name => 'Test: Category', :environment_id => @env.id)
  132 + c1 = create(Category, :environment_id => @env.id)
  133 + c2 = build(Category, :slug => c1.slug, :environment_id => @env.id)
137 134  
138 135 assert !c2.valid?
139 136 assert c2.errors[:slug.to_s].present?
... ... @@ -144,29 +141,26 @@ class CategoryTest < ActiveSupport::TestCase
144 141 root2 = fast_create(Category, :name => 'root category 2', :environment_id => @env.id)
145 142 child1 = fast_create(Category, :name => 'test category', :environment_id => @env.id, :parent_id => root1.id)
146 143  
147   - child2 = Category.new(:name => 'test category', :environment_id => @env.id, :parent => root2)
  144 + child2 = build(Category, :name => 'test category', :environment_id => @env.id, :parent => root2)
148 145 assert child2.valid?
149 146  
150   - newroot = Category.new(:name => 'test category', :environment_id => @env.id, :parent => nil)
  147 + newroot = build(Category, :name => 'test category', :environment_id => @env.id, :parent => nil)
151 148 assert newroot.valid?
152 149 end
153 150  
154 151 def test_renaming_a_category_should_change_path_of_children
155   - c1 = Category.create!(:name => 'parent', :environment_id => @env.id)
156   - c2 = Category.create!(:name => 'child', :environment_id => @env.id, :parent_id => c1.id)
157   - c3 = Category.create!(:name => 'grandchild', :environment_id => @env.id, :parent_id => c2.id)
158   -
159   - c1.name = 'parent new name'
160   - c1.save!
  152 + parent = create(Category, :environment => @env)
  153 + child = create(Category, :environment => @env, :parent => parent)
  154 + grandchild = create(Category, :environment => @env, :parent => child)
161 155  
162   - assert_equal 'parent-new-name', c1.path
163   - assert_equal 'parent-new-name/child', Category.find(c2.id).path
164   - assert_equal 'parent-new-name/child/grandchild', Category.find(c3.id).path
  156 + assert_equal parent.slug, parent.path
  157 + assert_equal "#{parent.path}/#{child.slug}", child.path
  158 + assert_equal "#{child.path}/#{grandchild.slug}", grandchild.path
165 159  
166 160 end
167 161  
168 162 should "limit the possibile display colors" do
169   - c = Category.new(:name => 'test category', :environment_id => @env.id)
  163 + c = build(Category, :name => 'test category', :environment_id => @env.id)
170 164  
171 165 c.display_color = 10
172 166 c.valid?
... ... @@ -184,7 +178,7 @@ class CategoryTest < ActiveSupport::TestCase
184 178 should 'avoid duplicated display colors' do
185 179 c1 = fast_create(Category, :name => 'test category', :environment_id => @env.id, :display_color => 1)
186 180  
187   - c = Category.new(:name => 'lalala', :environment_id => @env.id)
  181 + c = build(Category, :name => 'lalala', :environment_id => @env.id)
188 182 c.display_color = 1
189 183 assert !c.valid?
190 184 assert c.errors[:display_color.to_s].present?
... ... @@ -293,12 +287,12 @@ class CategoryTest < ActiveSupport::TestCase
293 287 a1 = person.articles.build(:name => 'art1')
294 288 a1.add_category c
295 289 a1.save!
296   - c1 = a1.comments.build(:title => 'comm1', :body => 'khdkashd ', :author => person); c1.save!
  290 + c1 = create(Comment, :article => a1, :title => 'comm1', :body => 'khdkashd ', :author => person)
297 291  
298 292 a2 = person.articles.build(:name => 'art2')
299 293 a2.add_category c
300 294 a2.save!
301   - c2 = a2.comments.build(:title => 'comm1', :body => 'khdkashd ', :author => person); c2.save!
  295 + c2 = create(Comment, :article => a2, :title => 'comm1', :body => 'khdkashd ', :author => person)
302 296  
303 297 assert_equal [c2, c1], c.recent_comments
304 298 end
... ... @@ -307,14 +301,14 @@ class CategoryTest < ActiveSupport::TestCase
307 301 c = @env.categories.build(:name => 'my category'); c.save!
308 302 person = create_user('testuser').person
309 303  
310   - a1 = person.articles.build(:name => 'art1', :category_ids => [c.id]); a1.save!
311   - a2 = person.articles.build(:name => 'art2', :category_ids => [c.id]); a2.save!
312   - a3 = person.articles.build(:name => 'art3', :category_ids => [c.id]); a3.save!
  304 + a1 = create(Article, :profile => person, :name => 'art1', :category_ids => [c.id])
  305 + a2 = create(Article, :profile => person, :name => 'art2', :category_ids => [c.id])
  306 + a3 = create(Article, :profile => person, :name => 'art3', :category_ids => [c.id])
313 307  
314   - Comment.create(:title => 'test', :body => 'asdsa', :author => person, :source => a1)
315   - 5.times { Comment.create(:title => 'test', :body => 'asdsa', :author => person, :source => a2) }
  308 + create(Comment, :title => 'test', :body => 'asdsa', :author => person, :source => a1)
  309 + 5.times { create(Comment, :title => 'test', :body => 'asdsa', :author => person, :source => a2) }
316 310  
317   - 10.times { Comment.create(:title => 'test', :body => 'kajsdsa', :author => person, :source => a3) }
  311 + 10.times { create(Comment, :title => 'test', :body => 'kajsdsa', :author => person, :source => a3) }
318 312  
319 313 assert_equal [a3, a2], c.most_commented_articles(2)
320 314 end
... ... @@ -323,13 +317,13 @@ class CategoryTest < ActiveSupport::TestCase
323 317 c = @env.categories.build(:name => 'my category'); c.save!
324 318 person = create_user('testuser').person
325 319  
326   - a1 = person.articles.build(:name => 'art1', :category_ids => [c.id]); a1.save!
327   - a2 = person.articles.build(:name => 'art2', :category_ids => [c.id]); a2.save!
328   - a3 = person.articles.build(:name => 'art3', :category_ids => [c.id]); a3.save!
  320 + a1 = create(Article, :profile => person, :name => 'art1', :category_ids => [c.id])
  321 + a2 = create(Article, :profile => person, :name => 'art2', :category_ids => [c.id])
  322 + a3 = create(Article, :profile => person, :name => 'art3', :category_ids => [c.id])
329 323  
330   - c1 = a1.comments.build(:title => 'test', :body => 'asdsa', :author => person); c1.save!
331   - c2 = a2.comments.build(:title => 'test', :body => 'asdsa', :author => person); c2.save!
332   - c3 = a3.comments.build(:title => 'test', :body => 'asdsa', :author => person); c3.save!
  324 + c1 = create(Comment, :article => a1, :title => 'test', :body => 'asdsa', :author => person)
  325 + c2 = create(Comment, :article => a2, :title => 'test', :body => 'asdsa', :author => person)
  326 + c3 = create(Comment, :article => a3, :title => 'test', :body => 'asdsa', :author => person)
333 327  
334 328 assert_equivalent [c1, c2, c3], c.comments
335 329 end
... ... @@ -407,7 +401,7 @@ class CategoryTest < ActiveSupport::TestCase
407 401  
408 402 should 'have image' do
409 403 assert_difference Category, :count do
410   - c = Category.create!(:name => 'test category1', :environment => Environment.default, :image_builder => {
  404 + c = create(Category, :name => 'test category1', :environment => Environment.default, :image_builder => {
411 405 :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')
412 406 })
413 407 assert_equal c.image(true).filename, 'rails.png'
... ... @@ -425,11 +419,11 @@ class CategoryTest < ActiveSupport::TestCase
425 419 end
426 420  
427 421 should 'cache children count' do
428   - c = Category.create!(:name => 'test', :environment => Environment.default)
  422 + c = create(Category, :name => 'test', :environment => Environment.default)
429 423  
430 424 # two children catagories
431   - c.children.create!(:name => 'test1', :environment => Environment.default)
432   - c.children.create!(:name => 'test2', :environment => Environment.default)
  425 + create(Category, :parent => c, :name => 'test1', :environment => Environment.default)
  426 + create(Category, :parent => c, :name => 'test2', :environment => Environment.default)
433 427  
434 428 c.reload
435 429  
... ... @@ -442,9 +436,9 @@ class CategoryTest < ActiveSupport::TestCase
442 436 end
443 437  
444 438 should 'get categories by type including nil' do
445   - category = Category.create!(:name => 'test category', :environment => Environment.default)
446   - region = Region.create!(:name => 'test region', :environment => Environment.default)
447   - product = ProductCategory.create!(:name => 'test product', :environment => Environment.default)
  439 + category = create(Category, :name => 'test category', :environment => Environment.default)
  440 + region = create(Region, :name => 'test region', :environment => Environment.default)
  441 + product = create(ProductCategory, :name => 'test product', :environment => Environment.default)
448 442 result = Category.from_types(['ProductCategory', '']).all
449 443 assert_equal 2, result.size
450 444 assert result.include?(product)
... ... @@ -452,9 +446,9 @@ class CategoryTest < ActiveSupport::TestCase
452 446 end
453 447  
454 448 should 'get categories by type and not nil' do
455   - category = Category.create!(:name => 'test category', :environment => Environment.default)
456   - region = Region.create!(:name => 'test region', :environment => Environment.default)
457   - product = ProductCategory.create!(:name => 'test product', :environment => Environment.default)
  449 + category = create(Category, :name => 'test category', :environment => Environment.default)
  450 + region = create(Region, :name => 'test region', :environment => Environment.default)
  451 + product = create(ProductCategory, :name => 'test product', :environment => Environment.default)
458 452 result = Category.from_types(['Region', 'ProductCategory']).all
459 453 assert_equal 2, result.size
460 454 assert result.include?(region)
... ... @@ -488,7 +482,7 @@ class CategoryTest < ActiveSupport::TestCase
488 482 end
489 483  
490 484 should 'paginate upcoming events' do
491   - category = Category.create!(:name => 'category1', :environment_id => Environment.default.id)
  485 + category = create(Category, :name => 'category1', :environment_id => Environment.default.id)
492 486 profile = fast_create(Profile)
493 487 event1 = category.events.build(:name => 'event1', :start_date => Time.now, :profile => profile)
494 488 event2 = category.events.build(:name => 'event2', :start_date => Time.now + 1.hour, :profile => profile)
... ... @@ -498,15 +492,15 @@ class CategoryTest < ActiveSupport::TestCase
498 492 end
499 493  
500 494 should 'remove all article categorizations when destroyed' do
501   - cat = Category.create!(:name => 'category 1', :environment_id => Environment.default.id)
502   - art = Article.create!(:name => 'article 1', :profile_id => fast_create(Person).id)
  495 + cat = create(Category, :name => 'category 1', :environment_id => Environment.default.id)
  496 + art = create(Article, :name => 'article 1', :profile_id => fast_create(Person).id)
503 497 art.add_category cat
504 498 cat.destroy
505 499 assert art.categories.reload.empty?
506 500 end
507 501  
508 502 should 'remove all profile categorizations when destroyed' do
509   - cat = Category.create!(:name => 'category 1', :environment_id => Environment.default.id)
  503 + cat = create(Category, :name => 'category 1', :environment_id => Environment.default.id)
510 504 p = create(Person, :user_id => fast_create(User).id)
511 505 p.add_category cat
512 506 cat.destroy
... ... @@ -538,15 +532,15 @@ class CategoryTest < ActiveSupport::TestCase
538 532 end
539 533  
540 534 should 'list category sub-categories' do
541   - c1 = Category.create!(:name => 'Category 1', :environment => Environment.default)
542   - c2 = Category.create!(:name => 'Category 2', :environment => Environment.default)
543   - c3 = Category.create!(:name => 'Category 3', :environment => Environment.default, :parent_id => c1)
544   - c4 = Category.create!(:name => 'Category 4', :environment => Environment.default, :parent_id => c1)
545   - c5 = Category.create!(:name => 'Category 5', :environment => Environment.default, :parent_id => c3)
  535 + c1 = create(Category, :name => 'Category 1', :environment => Environment.default)
  536 + c2 = create(Category, :name => 'Category 2', :environment => Environment.default)
  537 + c3 = create(Category, :name => 'Category 3', :environment => Environment.default, :parent_id => c1)
  538 + c4 = create(Category, :name => 'Category 4', :environment => Environment.default, :parent_id => c1)
  539 + c5 = create(Category, :name => 'Category 5', :environment => Environment.default, :parent_id => c3)
546 540  
547 541 sub_categories = Category.sub_categories(c1)
548 542  
549   - assert ActiveRecord::NamedScope::Scope, sub_categories.class
  543 + assert_equal ActiveRecord::Relation, sub_categories.class
550 544 assert_not_includes sub_categories, c1
551 545 assert_not_includes sub_categories, c2
552 546 assert_includes sub_categories, c3
... ... @@ -555,15 +549,15 @@ class CategoryTest < ActiveSupport::TestCase
555 549 end
556 550  
557 551 should 'list category sub-tree' do
558   - c1 = Category.create!(:name => 'Category 1', :environment => Environment.default)
559   - c2 = Category.create!(:name => 'Category 2', :environment => Environment.default)
560   - c3 = Category.create!(:name => 'Category 3', :environment => Environment.default, :parent_id => c1)
561   - c4 = Category.create!(:name => 'Category 4', :environment => Environment.default, :parent_id => c1)
562   - c5 = Category.create!(:name => 'Category 5', :environment => Environment.default, :parent_id => c3)
  552 + c1 = create(Category, :name => 'Category 1', :environment => Environment.default)
  553 + c2 = create(Category, :name => 'Category 2', :environment => Environment.default)
  554 + c3 = create(Category, :name => 'Category 3', :environment => Environment.default, :parent_id => c1)
  555 + c4 = create(Category, :name => 'Category 4', :environment => Environment.default, :parent_id => c1)
  556 + c5 = create(Category, :name => 'Category 5', :environment => Environment.default, :parent_id => c3)
563 557  
564 558 sub_tree = Category.sub_tree(c1)
565 559  
566   - assert ActiveRecord::NamedScope::Scope, sub_tree.class
  560 + assert_equal ActiveRecord::Relation, sub_tree.class
567 561 assert_includes sub_tree, c1
568 562 assert_not_includes sub_tree, c2
569 563 assert_includes sub_tree, c3
... ...