Commit cb340c2bebf38bfc91bec57f06f4136ad3d7fa63
Exists in
master
and in
29 other branches
Merge commit 'refs/merge-requests/47' of git://gitorious.org/noosfero/noosfero into stable
Changing requery_dependency by requery in will_paginate monkey patch
Showing
3 changed files
with
22 additions
and
20 deletions
Show diff stats
plugins/bsc/lib/bsc_plugin/bsc.rb
... | ... | @@ -2,6 +2,7 @@ class BscPlugin::Bsc < Enterprise |
2 | 2 | |
3 | 3 | has_many :enterprises |
4 | 4 | has_many :enterprise_requests, :class_name => 'BscPlugin::AssociateEnterprise' |
5 | + has_many :products, :finder_sql => 'select * from products where enterprise_id in (#{enterprises.map(&:id).join(",")})' | |
5 | 6 | |
6 | 7 | validates_presence_of :nickname |
7 | 8 | validates_presence_of :company_name |
... | ... | @@ -26,11 +27,6 @@ class BscPlugin::Bsc < Enterprise |
26 | 27 | {:title => _('Bsc info and settings'), :icon => 'edit-profile-enterprise'} |
27 | 28 | end |
28 | 29 | |
29 | - def products(reload_flag=false) | |
30 | - reload if reload_flag | |
31 | - enterprises.map { |enterprise| enterprise.products }.flatten | |
32 | - end | |
33 | - | |
34 | 30 | def create_product? |
35 | 31 | false |
36 | 32 | end | ... | ... |
plugins/bsc/test/unit/bsc_plugin/bsc_test.rb
... | ... | @@ -46,7 +46,7 @@ class BscPlugin::BscTest < Test::Unit::TestCase |
46 | 46 | e1 = fast_create(Enterprise) |
47 | 47 | e2 = fast_create(Enterprise) |
48 | 48 | category = fast_create(ProductCategory) |
49 | - bsc = BscPlugin::Bsc.new() | |
49 | + bsc = BscPlugin::Bsc.create!({:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ}) | |
50 | 50 | |
51 | 51 | p1 = fast_create(Product, :product_category_id => category.id) |
52 | 52 | p2 = fast_create(Product, :product_category_id => category.id) |
... | ... | @@ -59,25 +59,13 @@ class BscPlugin::BscTest < Test::Unit::TestCase |
59 | 59 | bsc.enterprises << e1 |
60 | 60 | bsc.enterprises << e2 |
61 | 61 | |
62 | + bsc.reload | |
63 | + | |
62 | 64 | assert_includes bsc.products, p1 |
63 | 65 | assert_includes bsc.products, p2 |
64 | 66 | assert_includes bsc.products, p3 |
65 | 67 | end |
66 | 68 | |
67 | - should 'reload products' do | |
68 | - e = fast_create(Enterprise) | |
69 | - category = fast_create(ProductCategory) | |
70 | - bsc = BscPlugin::Bsc.create!(:business_name => 'Sample Bsc', :company_name => 'Sample Bsc', :identifier => 'sample-bsc', :cnpj => VALID_CNPJ) | |
71 | - p = fast_create(Product, :product_category_id => category.id) | |
72 | - | |
73 | - e.bsc = bsc | |
74 | - e.save! | |
75 | - e.products << p | |
76 | - | |
77 | - assert_equal [], bsc.products | |
78 | - assert_equal [p], bsc.products(true) | |
79 | - end | |
80 | - | |
81 | 69 | should 'not be able to create product' do |
82 | 70 | bsc = BscPlugin::Bsc.new |
83 | 71 | assert !bsc.create_product? | ... | ... |
... | ... | @@ -0,0 +1,18 @@ |
1 | +# monkey patch to fix WillPaginate bug | |
2 | +# this was solved in will_paginate 3.x.pre, then remove this patch when upgrade to it | |
3 | +# | |
4 | +# http://sod.lighthouseapp.com/projects/17958/tickets/120-paginate-association-with-finder_sql-raises-typeerror | |
5 | +require 'will_paginate' | |
6 | + | |
7 | +WillPaginate::Finder::ClassMethods.module_eval do | |
8 | + def paginate_with_finder_sql(*args) | |
9 | + if respond_to?(:proxy_reflection) && !proxy_reflection.options[:finder_sql].nil? | |
10 | + # note: paginate_by_sql ignores the blocks. So don't pass the block | |
11 | + paginate_by_sql(@finder_sql, args.extract_options!) | |
12 | + else | |
13 | + paginate_without_finder_sql(*args) | |
14 | + end | |
15 | + end | |
16 | + # patch to deal with the custom_sql scenario | |
17 | + alias_method_chain :paginate, :finder_sql | |
18 | +end | ... | ... |