Commit 35984ff4f0f9a50db37262dcd9c0f8b809610f2b

Authored by Antonio Terceiro
1 parent 4e597889

Speeding up some more tests

app/models/category.rb
... ... @@ -42,11 +42,6 @@ class Category < ActiveRecord::Base
42 42 self.articles.most_commented(limit)
43 43 end
44 44  
45   - def total_items
46   - # FIXME this can be SLOW (??)
47   - articles.count + comments.count + enterprises.count + people.count + communities.count + products.count
48   - end
49   -
50 45 def display_in_menu?
51 46 display_in_menu
52 47 end
... ...
test/unit/category_test.rb
... ... @@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/../test_helper'
4 4 class CategoryTest < Test::Unit::TestCase
5 5  
6 6 def setup
7   - @env = Environment.create!(:name => 'Enviroment for testing')
  7 + @env = fast_create(Environment)
8 8 end
9 9  
10 10 def test_mandatory_field_name
... ... @@ -22,13 +22,13 @@ class CategoryTest &lt; Test::Unit::TestCase
22 22 end
23 23  
24 24 def test_relationship_with_environment
25   - c = Category.create!(:name => 'product category for testing', :environment_id => @env.id)
  25 + c = build(Category, :environment_id => @env.id)
26 26 assert_equal @env, c.environment
27 27 end
28 28  
29 29 def test_relation_with_parent
30   - parent_category = Category.create!(:name => 'parent category for testing', :environment_id => @env.id)
31   - c = Category.create!(:name => 'product category for testing', :environment_id => @env.id, :parent_id => parent_category.id)
  30 + parent_category = fast_create(Category)
  31 + c = build(Category, :parent_id => parent_category.id)
32 32 assert_equal parent_category, c.parent
33 33 end
34 34  
... ... @@ -98,8 +98,8 @@ class CategoryTest &lt; Test::Unit::TestCase
98 98 end
99 99  
100 100 def test_top_level_for
101   - cat = Category.create(:name => 'Category for testing', :environment_id => @env.id)
102   - sub_cat = Category.create(:name => 'SubCategory for testing', :environment_id => @env.id, :parent_id => cat.id)
  101 + cat = fast_create(Category, :environment_id => @env.id)
  102 + sub_cat = fast_create(Category, :environment_id => @env.id, :parent_id => cat.id)
103 103  
104 104 roots = Category.top_level_for(@env)
105 105  
... ... @@ -107,7 +107,7 @@ class CategoryTest &lt; Test::Unit::TestCase
107 107 end
108 108  
109 109 def test_slug
110   - c = Category.create(:name => 'Category name')
  110 + c = Category.new(:name => 'Category name')
111 111 assert_equal 'category-name', c.slug
112 112 end
113 113  
... ... @@ -137,41 +137,29 @@ class CategoryTest &lt; Test::Unit::TestCase
137 137 end
138 138  
139 139 def test_should_refuse_to_duplicate_slug_under_the_same_parent
140   - c1 = Category.create!(:name => 'test category', :environment_id => @env.id)
  140 + c1 = create(Category, :name => 'test category', :environment_id => @env.id)
141 141 c2 = Category.new(:name => 'Test: Category', :environment_id => @env.id)
142 142  
143 143 assert !c2.valid?
144 144 assert c2.errors.invalid?(:slug)
145   -
146 145 end
147 146  
148 147 should 'be able to duplicated slug in different scope' do
149   - @env.categories.destroy_all
  148 + root1 = fast_create(Category, :name => 'root category 1', :environment_id => @env.id)
  149 + root2 = fast_create(Category, :name => 'root category 2', :environment_id => @env.id)
  150 + child1 = fast_create(Category, :name => 'test category', :environment_id => @env.id, :parent_id => root1.id)
150 151  
151   - root1 = Category.create!(:name => 'root category 1', :environment_id => @env.id)
152   - root2 = Category.create!(:name => 'root category 2', :environment_id => @env.id)
  152 + child2 = Category.new(:name => 'test category', :environment_id => @env.id, :parent => root2)
  153 + assert child2.valid?
153 154  
154   - assert_nothing_raised ActiveRecord::RecordInvalid do
155   - Category.create!(:name => 'test category', :environment_id => @env.id, :parent => root1)
156   - Category.create!(:name => 'test category', :environment_id => @env.id, :parent => root2)
157   - end
158   - end
159   -
160   - should 'be able to duplicated slug in different scope without parent' do
161   - @env.categories.destroy_all
162   -
163   - root1 = Category.create!(:name => 'root category 1', :environment_id => @env.id)
164   -
165   - assert_nothing_raised ActiveRecord::RecordInvalid do
166   - Category.create!(:name => 'test category', :environment_id => @env.id, :parent => root1)
167   - Category.create!(:name => 'test category', :environment_id => @env.id, :parent => nil)
168   - end
  155 + newroot = Category.new(:name => 'test category', :environment_id => @env.id, :parent => nil)
  156 + assert newroot.valid?
169 157 end
170 158  
171 159 def test_renaming_a_category_should_change_path_of_children
172   - c1 = Category.create!(:name => 'parent', :environment_id => @env.id)
173   - c2 = Category.create!(:name => 'child', :environment_id => @env.id, :parent_id => c1.id)
174   - c3 = Category.create!(:name => 'grandchild', :environment_id => @env.id, :parent_id => c2.id)
  160 + c1 = create(Category, :name => 'parent', :environment_id => @env.id)
  161 + c2 = create(Category, :name => 'child', :environment_id => @env.id, :parent_id => c1.id)
  162 + c3 = create(Category, :name => 'grandchild', :environment_id => @env.id, :parent_id => c2.id)
175 163  
176 164 c1.name = 'parent new name'
177 165 c1.save!
... ... @@ -185,7 +173,6 @@ class CategoryTest &lt; Test::Unit::TestCase
185 173 should "limit the possibile display colors" do
186 174 c = Category.new(:name => 'test category', :environment_id => @env.id)
187 175  
188   -
189 176 c.display_color = 10
190 177 c.valid?
191 178 assert c.errors.invalid?(:display_color)
... ... @@ -200,10 +187,7 @@ class CategoryTest &lt; Test::Unit::TestCase
200 187 end
201 188  
202 189 should 'avoid duplicated display colors' do
203   -
204   - @env.categories.destroy_all
205   -
206   - c1 = Category.create!(:name => 'test category', :environment_id => @env.id, :display_color => 1)
  190 + c1 = fast_create(Category, :name => 'test category', :environment_id => @env.id, :display_color => 1)
207 191  
208 192 c = Category.new(:name => 'lalala', :environment_id => @env.id)
209 193 c.display_color = 1
... ... @@ -217,9 +201,9 @@ class CategoryTest &lt; Test::Unit::TestCase
217 201 end
218 202  
219 203 should 'be able to get top ancestor' do
220   - c1 = Category.create!(:name => 'test category', :environment_id => @env.id)
221   - c2 = Category.create!(:name => 'test category', :environment_id => @env.id, :parent_id => c1.id)
222   - c3 = Category.create!(:name => 'test category', :environment_id => @env.id, :parent_id => c2.id)
  204 + c1 = fast_create(Category, :name => 'test category', :environment_id => @env.id)
  205 + c2 = fast_create(Category, :name => 'test category', :environment_id => @env.id, :parent_id => c1.id)
  206 + c3 = fast_create(Category, :name => 'test category', :environment_id => @env.id, :parent_id => c2.id)
223 207  
224 208 assert_equal c1, c1.top_ancestor
225 209 assert_equal c1, c2.top_ancestor
... ... @@ -227,10 +211,9 @@ class CategoryTest &lt; Test::Unit::TestCase
227 211 end
228 212  
229 213 should 'explode path' do
230   - c1 = Category.create!(:name => 'parent', :environment_id => @env.id)
231   - c2 = Category.create!(:name => 'child', :environment_id => @env.id, :parent_id => c1.id)
232   -
233   - assert_equal [ 'parent', 'child'], c2.explode_path
  214 + c1 = Category.new
  215 + c1.expects(:path).returns("path/to/myself")
  216 + assert_equal [ 'path', 'to', 'myself'], c1.explode_path
234 217 end
235 218  
236 219 ################################################################
... ... @@ -301,9 +284,9 @@ class CategoryTest &lt; Test::Unit::TestCase
301 284  
302 285 should 'have enterprises' do
303 286 c = @env.categories.build(:name => 'my category'); c.save!
304   - ent1 = Enterprise.create!(:identifier => 'enterprise_1', :name => 'Enterprise one')
  287 + ent1 = fast_create(Enterprise, :identifier => 'enterprise_1', :name => 'Enterprise one')
305 288 ent1.add_category c
306   - ent2 = Enterprise.create!(:identifier => 'enterprise_2', :name => 'Enterprise one')
  289 + ent2 = fast_create(Enterprise, :identifier => 'enterprise_2', :name => 'Enterprise one')
307 290 ent2.add_category c
308 291 assert_includes c.enterprises, ent1
309 292 assert_includes c.enterprises, ent2
... ... @@ -320,18 +303,18 @@ class CategoryTest &lt; Test::Unit::TestCase
320 303  
321 304 should 'have communities' do
322 305 c = @env.categories.build(:name => 'my category'); c.save!
323   - c1 = Environment.default.communities.create!(:name => 'testcommunity_1')
  306 + c1 = fast_create(Community, :name => 'testcommunity_1')
324 307 c1.add_category c
325   - c2 = Environment.default.communities.create!(:name => 'testcommunity_2')
  308 + c2 = fast_create(Community, :name => 'testcommunity_2')
326 309 c2.add_category c
327 310 assert_equal [c1, c2], c.communities
328 311 end
329 312  
330 313 should 'have products through enteprises' do
331 314 c = @env.categories.build(:name => 'my category'); c.save!
332   - ent1 = Enterprise.create!(:identifier => 'enterprise_1', :name => 'Enterprise one')
  315 + ent1 = fast_create(Enterprise, :identifier => 'enterprise_1', :name => 'Enterprise one')
333 316 ent1.add_category c
334   - ent2 = Enterprise.create!(:identifier => 'enterprise_2', :name => 'Enterprise one')
  317 + ent2 = fast_create(Enterprise, :identifier => 'enterprise_2', :name => 'Enterprise one')
335 318 ent2.add_category c
336 319 prod1 = ent1.products.create!(:name => 'test_prod1')
337 320 prod2 = ent2.products.create!(:name => 'test_prod2')
... ... @@ -341,7 +324,7 @@ class CategoryTest &lt; Test::Unit::TestCase
341 324  
342 325 should 'not have person through communities' do
343 326 c = @env.categories.build(:name => 'my category'); c.save!
344   - com = Community.create!(:identifier => 'community_1', :name => 'Community one')
  327 + com = fast_create(Community, :identifier => 'community_1', :name => 'Community one')
345 328 com.add_category c
346 329 person = create_user('test_user').person
347 330 person.add_category c
... ... @@ -351,7 +334,7 @@ class CategoryTest &lt; Test::Unit::TestCase
351 334  
352 335 should 'not have person through enterprises' do
353 336 c = @env.categories.build(:name => 'my category'); c.save!
354   - ent = Enterprise.create!(:identifier => 'enterprise_1', :name => 'Enterprise one')
  337 + ent = fast_create(Enterprise, :identifier => 'enterprise_1', :name => 'Enterprise one')
355 338 ent.add_category c
356 339 person = create_user('test_user').person
357 340 person.add_category c
... ... @@ -363,33 +346,12 @@ class CategoryTest &lt; Test::Unit::TestCase
363 346 c = @env.categories.build(:name => 'my category'); c.save!
364 347 person = create_user('test_user').person
365 348 person.add_category c
366   - ent = Enterprise.create!(:identifier => 'enterprise_1', :name => 'Enterprise one')
  349 + ent = fast_create(Enterprise, :identifier => 'enterprise_1', :name => 'Enterprise one')
367 350 ent.add_category c
368 351 assert_includes c.people, person
369 352 assert_not_includes c.people, ent
370 353 end
371 354  
372   - should 'report the total items in this category' do
373   - @category = Category.create!(:name => 'my category', :environment => @env)
374   - # in category
375   - person1 = create_user('test1').person; person1.add_category @category; person1.save!
376   - art1 = person1.articles.build(:name => 'an article to be counted'); art1.add_category @category; art1.save!
377   - comment1 = art1.comments.build(:title => 'comment to be counted', :body => 'hfyfyh', :author => person1); comment1.save!
378   - ent1 = Enterprise.create!(:name => 'test2', :identifier => 'test2', :category_ids => [@category.id])
379   - com1 = Community.create!(:name => 'test3', :identifier => 'test3', :category_ids => [@category.id])
380   - prod1 = Product.create!(:name => 'test4', :enterprise => ent1)
381   -
382   - # not in category
383   - person2 = create_user('test5').person
384   - art2 = person2.articles.build(:name => 'an article not to be counted'); art2.save!
385   - comment2 = art2.comments.build(:title => 'comment not to be counted', :body => 'hfh', :author => person2); comment2.save!
386   - ent2 = Enterprise.create!(:name => 'test6', :identifier => 'test6')
387   - com2 = Community.create!(:name => 'test7', :identifier => 'test7')
388   - prod2 = Product.create!(:name => 'test8', :enterprise => ent2)
389   -
390   - assert_equal 6, @category.total_items
391   - end
392   -
393 355 should 'have image' do
394 356 assert_difference Category, :count do
395 357 c = Category.create!(:name => 'test category1', :environment => Environment.default, :image_builder => {
... ... @@ -400,11 +362,11 @@ class CategoryTest &lt; Test::Unit::TestCase
400 362 end
401 363  
402 364 should 'display in menu only if have display_menu setted to true' do
403   - c = Category.create!(:name => 'test category top', :environment => Environment.default, :display_in_menu => true)
404   - c1 = Category.create!(:name => 'test category 1', :environment => Environment.default, :display_in_menu => true, :parent => c)
405   - c11 = Category.create!(:name => 'test category 11', :environment => Environment.default, :display_in_menu => true, :parent => c1)
406   - c2 = Category.create!(:name => 'test category 2', :environment => Environment.default, :display_in_menu => true, :parent => c)
407   - c3 = Category.create!(:name => 'test category 3', :environment => Environment.default, :parent => c)
  365 + c = fast_create(Category, :display_in_menu => true)
  366 + c1 = fast_create(Category, :display_in_menu => true, :parent_id => c.id)
  367 + c11 = fast_create(Category, :display_in_menu => true, :parent_id => c1.id)
  368 + c2 = fast_create(Category, :display_in_menu => true, :parent_id => c.id)
  369 + c3 = fast_create(Category, :parent_id => c.id)
408 370  
409 371 assert_equivalent [c1, c11, c2], c.children_for_menu
410 372 end
... ...
test/unit/environment_finder_test.rb
... ... @@ -2,12 +2,6 @@ require File.dirname(__FILE__) + &#39;/../test_helper&#39;
2 2  
3 3 class EnvironmentFinderTest < ActiveSupport::TestCase
4 4  
5   -# all_fixtures
6   -
7   - def setup
8   - Profile.rebuild_index
9   - end
10   -
11 5 should 'find articles' do
12 6 person = create_user('teste').person
13 7 art = person.articles.build(:name => 'an article to be found'); art.save!
... ...