Commit dc22707ba1b2f198f7e65b3aa1d057eafd4c75ff
1 parent
71559296
Exists in
master
and in
23 other branches
ActionItem501: fixed bugs that prevented tests to pass
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2141 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
10 changed files
with
50 additions
and
22 deletions
Show diff stats
app/models/category_finder.rb
| ... | ... | @@ -20,7 +20,7 @@ class CategoryFinder |
| 20 | 20 | asset_class(asset).paginate(:all, options_for_find(asset_class(asset), {:order => "created_at desc, #{asset_table(asset)}.id desc"}.merge(options))) |
| 21 | 21 | else |
| 22 | 22 | ferret_options = {:page => options.delete(:page), :per_page => options.delete(:per_page)} |
| 23 | - asset_class(asset).find_by_contents(query, ferret_options, options_for_find(asset_class(asset), options)).uniq | |
| 23 | + asset_class(asset).find_by_contents(query, ferret_options, options_for_find(asset_class(asset), options)) | |
| 24 | 24 | end |
| 25 | 25 | end |
| 26 | 26 | |
| ... | ... | @@ -63,7 +63,7 @@ class CategoryFinder |
| 63 | 63 | |
| 64 | 64 | case klass.name |
| 65 | 65 | when 'Comment' |
| 66 | - {:select => 'distinct comments.*', :joins => 'inner join articles_categories on articles_categories.article_id = comments.article_id', :conditions => ['articles_categories.category_id = (?)', category_id]}.merge!(options) | |
| 66 | + {:joins => 'inner join articles_categories on articles_categories.article_id = comments.article_id', :conditions => ['articles_categories.category_id = (?)', category_id]}.merge!(options) | |
| 67 | 67 | when 'Product' |
| 68 | 68 | if prod_cat_ids |
| 69 | 69 | {:joins => 'inner join categories_profiles on products.enterprise_id = categories_profiles.profile_id', :conditions => ['categories_profiles.category_id = (?) and products.product_category_id in (?)', category_id, prod_cat_ids]}.merge!(options) | ... | ... |
app/models/enterprise.rb
app/models/product.rb
app/models/profile_categorization.rb
| ... | ... | @@ -4,7 +4,7 @@ class ProfileCategorization < ActiveRecord::Base |
| 4 | 4 | belongs_to :category |
| 5 | 5 | |
| 6 | 6 | def self.add_category_to_profile(category, profile) |
| 7 | - | |
| 7 | + return if self.find_by_category_id_and_profile_id(category.id, profile.id) | |
| 8 | 8 | connection.execute("insert into categories_profiles (category_id, profile_id) values(#{category.id}, #{profile.id})") |
| 9 | 9 | |
| 10 | 10 | c = category.parent | ... | ... |
app/views/search/_product_categories_menu.rhtml
| ... | ... | @@ -3,7 +3,11 @@ |
| 3 | 3 | <div id="product-categories-menu"> |
| 4 | 4 | <ul> |
| 5 | 5 | <% if product_categories_menu.empty? %> |
| 6 | - <li class="cat-empty"> <%= _('There is no sub-categories for %s.') % @product_category.name %> </li> | |
| 6 | + <% if @product_category %> | |
| 7 | + <li class="cat-empty"> <%= _('There is no sub-categories for %s.') % @product_category.name %> </li> | |
| 8 | + <% else %> | |
| 9 | + <li class="cat-empty"> <%= _('There is no categories.') %> </li> | |
| 10 | + <% end %> | |
| 7 | 11 | <% end %> |
| 8 | 12 | <% product_categories_menu.each do |cat, hits, childs| %> |
| 9 | 13 | <li class="cat-parent" onmouseover="prodCatMenuOver(this)" onmouseout="prodCatMenuOut(this)"> | ... | ... |
test/functional/search_controller_test.rb
| ... | ... | @@ -244,11 +244,11 @@ class SearchControllerTest < Test::Unit::TestCase |
| 244 | 244 | end |
| 245 | 245 | |
| 246 | 246 | should 'find products in a specific category' do |
| 247 | - ent1 = Enterprise.create!(:name => 'teste1', :identifier => 'teste1'); ent1.add_category @category | |
| 247 | + ent1 = Enterprise.create!(:name => 'teste1', :identifier => 'teste1', :category_ids => [@category.id]) | |
| 248 | 248 | ent2 = Enterprise.create!(:name => 'teste2', :identifier => 'teste2') |
| 249 | 249 | prod1 = ent1.products.create!(:name => 'a beautiful product') |
| 250 | 250 | prod2 = ent2.products.create!(:name => 'another beautiful product') |
| 251 | - get :index, :category_path => ['my-category'], :query => 'beautiful', :find_in => ['products'] | |
| 251 | + get :index, :category_path => @category.path.split('/'), :query => 'beautiful', :find_in => ['products'] | |
| 252 | 252 | assert_includes assigns(:results)[:products], prod1 |
| 253 | 253 | assert_not_includes assigns(:results)[:products], prod2 |
| 254 | 254 | end | ... | ... |
test/unit/category_finder_test.rb
| ... | ... | @@ -167,6 +167,8 @@ class CategoryFinderTest < ActiveSupport::TestCase |
| 167 | 167 | p1 = @finder.find('enterprises', 'teste', :per_page => 1, :page => 1) |
| 168 | 168 | p2 = @finder.find('enterprises', 'teste', :per_page => 1, :page => 2) |
| 169 | 169 | |
| 170 | + assert_respond_to p1, :total_entries | |
| 171 | + assert_respond_to p2, :total_entries | |
| 170 | 172 | assert (p1 == [ent1] && p2 == [ent2]) || (p1 == [ent2] && p2 == [ent1]) # consistent paging |
| 171 | 173 | end |
| 172 | 174 | |
| ... | ... | @@ -209,25 +211,23 @@ class CategoryFinderTest < ActiveSupport::TestCase |
| 209 | 211 | end |
| 210 | 212 | |
| 211 | 213 | should 'count enterprises with query and options' do |
| 212 | - options = mock | |
| 213 | 214 | results = mock |
| 214 | 215 | |
| 215 | - @finder.expects(:find).with('people', 'my query', options).returns(results) | |
| 216 | + @finder.expects(:find).with('people', 'my query', kind_of(Hash)).returns(results) | |
| 216 | 217 | |
| 217 | 218 | results.expects(:total_hits).returns(99) |
| 218 | 219 | |
| 219 | - assert_equal 99, @finder.count('people', 'my query', options) | |
| 220 | + assert_equal 99, @finder.count('people', 'my query', {}) | |
| 220 | 221 | end |
| 221 | 222 | |
| 222 | 223 | should 'count enterprises without query but with options' do |
| 223 | - options = mock | |
| 224 | 224 | results = mock |
| 225 | 225 | |
| 226 | - @finder.expects(:find).with('people', nil, options).returns(results) | |
| 226 | + @finder.expects(:find).with('people', nil, kind_of(Hash)).returns(results) | |
| 227 | 227 | |
| 228 | - results.expects(:size).returns(99) | |
| 228 | + results.expects(:total_entries).returns(99) | |
| 229 | 229 | |
| 230 | - assert_equal 99, @finder.count('people', nil, options) | |
| 230 | + assert_equal 99, @finder.count('people', nil, {}) | |
| 231 | 231 | end |
| 232 | 232 | |
| 233 | 233 | should 'not list more people than limit' do |
| ... | ... | @@ -252,13 +252,14 @@ class CategoryFinderTest < ActiveSupport::TestCase |
| 252 | 252 | should 'not return the same result twice' do |
| 253 | 253 | parent = Category.create!(:name => 'parent category', :environment => Environment.default) |
| 254 | 254 | child = Category.create!(:name => 'child category', :environment => Environment.default, :parent => parent) |
| 255 | - p1 = create_user('people_1').person; p1.name = 'a beautiful person'; p1.add_category(child); p1.save! | |
| 256 | - p1.add_category(parent); p1.save! | |
| 255 | + p1 = create_user('people_1').person | |
| 256 | + p1.name = 'a beautiful person' | |
| 257 | + p1.category_ids = [child.id, parent.id]; p1.save! | |
| 257 | 258 | |
| 258 | 259 | f = CategoryFinder.new(parent) |
| 259 | 260 | result = f.find(:people, 'beautiful') |
| 260 | 261 | |
| 261 | - assert_equivalent [p1], result | |
| 262 | + assert_equal [p1], result | |
| 262 | 263 | assert_equal 1, result.size |
| 263 | 264 | end |
| 264 | 265 | ... | ... |
test/unit/enterprise_test.rb
| ... | ... | @@ -173,4 +173,22 @@ class EnterpriseTest < Test::Unit::TestCase |
| 173 | 173 | end |
| 174 | 174 | end |
| 175 | 175 | |
| 176 | + should 'list product categories full name' do | |
| 177 | + full_name = mock | |
| 178 | + ent = Enterprise.create!(:name => 'test ent', :identifier => 'test_ent') | |
| 179 | + p = ent.products.create!(:name => 'test prod') | |
| 180 | + p.expects(:category_full_name).returns(full_name) | |
| 181 | + | |
| 182 | + assert_equal [full_name], ent.product_categories | |
| 183 | + end | |
| 184 | + | |
| 185 | + should 'not return nil values when have uncategorized products' do | |
| 186 | + full_name = mock | |
| 187 | + ent = Enterprise.create!(:name => 'test ent', :identifier => 'test_ent') | |
| 188 | + p1 = ent.products.create!(:name => 'test prod 1') | |
| 189 | + p1.expects(:category_full_name).returns(full_name) | |
| 190 | + p2 = ent.products.create!(:name => 'test prod 2') | |
| 191 | + | |
| 192 | + assert_equal [full_name], ent.product_categories | |
| 193 | + end | |
| 176 | 194 | end | ... | ... |
test/unit/environment_finder_test.rb
| ... | ... | @@ -116,14 +116,13 @@ class EnvironmentFinderTest < ActiveSupport::TestCase |
| 116 | 116 | should 'count enterprises with query and options' do |
| 117 | 117 | env = Environment.default |
| 118 | 118 | finder = EnvironmentFinder.new(env) |
| 119 | - options = mock | |
| 120 | 119 | results = mock |
| 121 | 120 | |
| 122 | - finder.expects(:find).with('people', 'my query', options).returns(results) | |
| 121 | + finder.expects(:find).with('people', 'my query', kind_of(Hash)).returns(results) | |
| 123 | 122 | |
| 124 | 123 | results.expects(:total_hits).returns(99) |
| 125 | 124 | |
| 126 | - assert_equal 99, finder.count('people', 'my query', options) | |
| 125 | + assert_equal 99, finder.count('people', 'my query', {}) | |
| 127 | 126 | end |
| 128 | 127 | |
| 129 | 128 | should 'find articles by initial' do | ... | ... |
test/unit/product_test.rb
| ... | ... | @@ -72,10 +72,16 @@ class ProductTest < Test::Unit::TestCase |
| 72 | 72 | cat.expects(:full_name).returns('A/B/C') |
| 73 | 73 | |
| 74 | 74 | p = Product.new |
| 75 | - p.expects(:product_category).returns(cat) | |
| 75 | + p.stubs(:product_category).returns(cat) | |
| 76 | 76 | assert_equal ['A','B','C'], p.category_full_name |
| 77 | 77 | end |
| 78 | 78 | |
| 79 | + should 'return a nil cateory full name when not categorized' do | |
| 80 | + p = Product.new | |
| 81 | + p.stubs(:product_category).returns(nil) | |
| 82 | + assert_equal nil, p.category_full_name | |
| 83 | + end | |
| 84 | + | |
| 79 | 85 | should 'be indexed by category full name' do |
| 80 | 86 | p = Product.new(:name => 'a test product') |
| 81 | 87 | p.expects(:category_full_name).returns('interesting category') | ... | ... |