Commit 8caf11c4903294b3fd5f21ce56a655621cb7338d

Authored by Rodrigo Souto
1 parent f7c88798

product-categories-block: add 'catalog_only' option and define it as default

app/models/product_categories_block.rb
@@ -33,8 +33,18 @@ class ProductCategoriesBlock < Block @@ -33,8 +33,18 @@ class ProductCategoriesBlock < Block
33 end 33 end
34 end 34 end
35 35
36 - def visible?(context=nil)  
37 - box.environment.enabled?('products_for_enterprises') 36 + DISPLAY_OPTIONS['catalog_only'] = __('Only on the catalog')
  37 +
  38 + def display
  39 + settings[:display].nil? ? 'catalog_only' : super
  40 + end
  41 +
  42 + def display_catalog_only(context)
  43 + context[:params][:controller] == 'catalog'
  44 + end
  45 +
  46 + def visible?(*args)
  47 + box.environment.enabled?('products_for_enterprises') ? super(*args) : false
38 end 48 end
39 49
40 end 50 end
test/unit/product_categories_block_test.rb
@@ -13,4 +13,23 @@ class ProductCategoriesBlockTest < ActiveSupport::TestCase @@ -13,4 +13,23 @@ class ProductCategoriesBlockTest < ActiveSupport::TestCase
13 block.box.environment.disable('products_for_enterprises') 13 block.box.environment.disable('products_for_enterprises')
14 assert !block.visible? 14 assert !block.visible?
15 end 15 end
  16 +
  17 + should 'have display option to show only on catalog' do
  18 + assert ProductCategoriesBlock::DISPLAY_OPTIONS.include?('catalog_only')
  19 + end
  20 +
  21 + should 'set display to catalog_only by default' do
  22 + assert_equal 'catalog_only', ProductCategoriesBlock.new.display
  23 + end
  24 +
  25 + should 'display block only on catalog if display is set to catalog_only' do
  26 + enterprise = fast_create(Enterprise)
  27 + box = fast_create(Box, :owner_id => enterprise.id, :owner_type => 'Profile')
  28 + block = ProductCategoriesBlock.new
  29 + block.box = box
  30 + block.box.environment.enable('products_for_enterprises')
  31 +
  32 + assert !block.visible?(:params => {:controller => 'any_other'})
  33 + assert block.visible?(:params => {:controller => 'catalog'})
  34 + end
16 end 35 end