[noosfero/noosfero][master] display_filter should return all public content if no profile is passed

Leandro Nunes gitlab at gitlab.com
Tue May 19 15:08:37 BRT 2015


Leandro Nunes pushed to branch master at Noosfero / noosfero


Commits:
71cf8bc1 by Leandro Nunes dos Santos at 2015-05-19T15:07:51Z
display_filter should return all public content if no profile is passed

- - - - -


2 changed files:

- app/models/article.rb
- test/unit/article_test.rb


Changes:

=====================================
app/models/article.rb
=====================================
--- a/app/models/article.rb
+++ b/app/models/article.rb
@@ -498,13 +498,13 @@ class Article < ActiveRecord::Base
 
   scope :display_filter, lambda {|user, profile|
     return published if (user.nil? && profile && profile.public?)
-    return [] if user.nil? || profile.nil? || (profile && !profile.public? && !user.follows?(profile))
+    return [] if user.nil? || (profile && !profile.public? && !user.follows?(profile))
     where(
       [
        "published = ? OR last_changed_by_id = ? OR profile_id = ? OR ?
         OR  (show_to_followers = ? AND ? AND profile_id = ?)", true, user.id, user.id,
         profile.nil? ?  false : user.has_permission?(:view_private_content, profile),
-        true, user.follows?(profile), profile.id
+        true, user.follows?(profile), (profile.nil? ? nil : profile.id)
       ]
     )
   }


=====================================
test/unit/article_test.rb
=====================================
--- a/test/unit/article_test.rb
+++ b/test/unit/article_test.rb
@@ -2040,6 +2040,17 @@ class ArticleTest < ActiveSupport::TestCase
     assert_equal [], Article.display_filter(user, nil)
   end
 
+  should 'display_filter show person public content to non friends passing nil as profile parameter' do
+    user = create_user('someuser').person
+    p = fast_create(Person)
+    assert !p.is_a_friend?(user)
+    assert !user.is_admin?
+    Article.delete_all
+    a1 = fast_create(Article, :profile_id => p.id)
+    a2 = fast_create(Article)
+    assert_equivalent [a1,a2], Article.display_filter(user, nil)
+  end
+
   should 'display_filter do not show community private content to non members passing nil as profile parameter' do
     user = create_user('someuser').person
     p = fast_create(Community)
@@ -2049,6 +2060,16 @@ class ArticleTest < ActiveSupport::TestCase
     assert_equal [], Article.display_filter(user, nil)
   end
 
+  should 'display_filter show community public content to non members passing nil as profile parameter' do
+    user = create_user('someuser').person
+    p = fast_create(Community)
+    assert !user.is_member_of?(p)
+    Article.delete_all
+    a1 = fast_create(Article, :profile_id => p.id)
+    a2 = fast_create(Article)
+    assert_equivalent [a1,a2], Article.display_filter(user, nil)
+  end
+
   should 'display_filter show community public content of private community for user members' do
     user = create_user('someuser').person
     p = fast_create(Community, :public_profile => false)



View it on GitLab: https://gitlab.com/noosfero/noosfero/commit/71cf8bc1368261f02dd440cc016045baba883bb7
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20150519/a1af6270/attachment-0001.html>


More information about the Noosfero-dev mailing list