Commit d3898cc182a035b2851f46b35cba02850b6c5660
1 parent
b4c42da1
Exists in
master
and in
29 other branches
Add scope to search product categories by environment
Showing
2 changed files
with
16 additions
and
0 deletions
Show diff stats
app/models/product_category.rb
... | ... | @@ -10,6 +10,9 @@ class ProductCategory < Category |
10 | 10 | :joins => :products, |
11 | 11 | :conditions => ['products.profile_id = ?', enterprise.id] |
12 | 12 | }} |
13 | + scope :by_environment, lambda { |environment| { | |
14 | + :conditions => ['environment_id = ?', environment.id] | |
15 | + }} | |
13 | 16 | scope :unique_by_level, lambda { |level| { |
14 | 17 | :select => "DISTINCT ON (filtered_category) split_part(path, '/', #{level}) AS filtered_category, categories.*" |
15 | 18 | }} | ... | ... |
test/unit/product_category_test.rb
... | ... | @@ -57,6 +57,19 @@ class ProductCategoryTest < ActiveSupport::TestCase |
57 | 57 | assert_equivalent [c1,c2], scope |
58 | 58 | end |
59 | 59 | |
60 | + should 'provide a scope based on the environment' do | |
61 | + alt_environment = fast_create(Environment) | |
62 | + c1 = ProductCategory.create!(:name => 'test cat 1', :environment => Environment.default) | |
63 | + c2 = ProductCategory.create!(:name => 'test cat 2', :environment => alt_environment) | |
64 | + c3 = ProductCategory.create!(:name => 'test cat 3', :environment => Environment.default) | |
65 | + | |
66 | + scope = ProductCategory.by_environment(alt_environment) | |
67 | + | |
68 | + assert_equal ActiveRecord::Relation, scope.class | |
69 | + assert_equivalent [c2], scope | |
70 | + assert_equivalent [c1,c3], ProductCategory.by_environment(Environment.default) | |
71 | + end | |
72 | + | |
60 | 73 | should 'fetch unique categories by level' do |
61 | 74 | c1 = ProductCategory.create!(:name => 'test cat 1', :environment => Environment.default) |
62 | 75 | c11 = ProductCategory.create!(:name => 'test cat 11', :environment => Environment.default, :parent => c1) | ... | ... |