Commit 9e7cf971d9ee2a7c8f7057579a99f95562890ddc
1 parent
90f4f1c1
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Fix block display options when a profile has no home page defined
The home_page_only and except_home_page methods should work when no home page was selected for a profile.
Showing
2 changed files
with
31 additions
and
5 deletions
Show diff stats
app/models/block.rb
| @@ -72,18 +72,23 @@ class Block < ActiveRecord::Base | @@ -72,18 +72,23 @@ class Block < ActiveRecord::Base | ||
| 72 | end | 72 | end |
| 73 | 73 | ||
| 74 | def display_home_page_only(context) | 74 | def display_home_page_only(context) |
| 75 | - if context[:article] | ||
| 76 | - return context[:article] == owner.home_page | 75 | + return context[:article] == owner.home_page if context[:article] |
| 76 | + | ||
| 77 | + if owner.kind_of?(Profile) | ||
| 78 | + return owner.home_page.nil? && context[:request_path] == "/profile/#{owner.identifier}" | ||
| 77 | else | 79 | else |
| 78 | return context[:request_path] == '/' | 80 | return context[:request_path] == '/' |
| 79 | end | 81 | end |
| 80 | end | 82 | end |
| 81 | 83 | ||
| 82 | def display_except_home_page(context) | 84 | def display_except_home_page(context) |
| 83 | - if context[:article] | ||
| 84 | - return context[:article] != owner.home_page | 85 | + return context[:article] != owner.home_page if context[:article] |
| 86 | + | ||
| 87 | + if owner.kind_of?(Profile) | ||
| 88 | + return (!owner.home_page.nil? && context[:request_path] != "/#{owner.identifier}") || | ||
| 89 | + (owner.home_page.nil? && context[:request_path] != "/profile/#{owner.identifier}") | ||
| 85 | else | 90 | else |
| 86 | - return context[:request_path] != '/' + (owner.kind_of?(Profile) ? owner.identifier : '') | 91 | + return context[:request_path] != '/' |
| 87 | end | 92 | end |
| 88 | end | 93 | end |
| 89 | 94 |
test/unit/block_test.rb
| @@ -79,6 +79,16 @@ class BlockTest < ActiveSupport::TestCase | @@ -79,6 +79,16 @@ class BlockTest < ActiveSupport::TestCase | ||
| 79 | assert_equal false, block.visible?(:article => Article.new) | 79 | assert_equal false, block.visible?(:article => Article.new) |
| 80 | end | 80 | end |
| 81 | 81 | ||
| 82 | + should 'be able to be displayed only in the default profile homepage when home page is nil' do | ||
| 83 | + profile = build(Profile, :identifier => 'testinguser') | ||
| 84 | + profile.home_page = nil | ||
| 85 | + block = build(Block, :display => 'home_page_only') | ||
| 86 | + block.stubs(:owner).returns(profile) | ||
| 87 | + | ||
| 88 | + assert_equal true, block.visible?(:request_path => '/profile/testinguser') | ||
| 89 | + assert_equal false, block.visible?(:article => Article.new) | ||
| 90 | + end | ||
| 91 | + | ||
| 82 | should 'be able to be displayed only in the homepage (index) of the environment' do | 92 | should 'be able to be displayed only in the homepage (index) of the environment' do |
| 83 | block = build(Block, :display => 'home_page_only') | 93 | block = build(Block, :display => 'home_page_only') |
| 84 | 94 | ||
| @@ -99,6 +109,8 @@ class BlockTest < ActiveSupport::TestCase | @@ -99,6 +109,8 @@ class BlockTest < ActiveSupport::TestCase | ||
| 99 | 109 | ||
| 100 | should 'be able to be displayed everywhere except on profile index' do | 110 | should 'be able to be displayed everywhere except on profile index' do |
| 101 | profile = build(Profile, :identifier => 'testinguser') | 111 | profile = build(Profile, :identifier => 'testinguser') |
| 112 | + home_page = Article.new | ||
| 113 | + profile.home_page = home_page | ||
| 102 | block = build(Block, :display => 'except_home_page') | 114 | block = build(Block, :display => 'except_home_page') |
| 103 | block.stubs(:owner).returns(profile) | 115 | block.stubs(:owner).returns(profile) |
| 104 | 116 | ||
| @@ -106,6 +118,15 @@ class BlockTest < ActiveSupport::TestCase | @@ -106,6 +118,15 @@ class BlockTest < ActiveSupport::TestCase | ||
| 106 | assert_equal true, block.visible?(:article => nil) | 118 | assert_equal true, block.visible?(:article => nil) |
| 107 | end | 119 | end |
| 108 | 120 | ||
| 121 | + should 'be able to be displayed everywhere except on default profile index' do | ||
| 122 | + profile = build(Profile, :identifier => 'testinguser') | ||
| 123 | + block = build(Block, :display => 'except_home_page') | ||
| 124 | + block.stubs(:owner).returns(profile) | ||
| 125 | + | ||
| 126 | + assert_equal false, block.visible?(:article => nil, :request_path => '/profile/testinguser') | ||
| 127 | + assert_equal true, block.visible?(:article => nil) | ||
| 128 | + end | ||
| 129 | + | ||
| 109 | should 'be able to save display setting' do | 130 | should 'be able to save display setting' do |
| 110 | user = create_user('testinguser').person | 131 | user = create_user('testinguser').person |
| 111 | box = fast_create(Box, :owner_id => user.id, :owner_type => 'Profile') | 132 | box = fast_create(Box, :owner_id => user.id, :owner_type => 'Profile') |