[Git][noosfero/noosfero][master] 2 commits: should list people in blocks randomically

Leandro Nunes gitlab at mg.gitlab.com
Wed Jun 21 18:18:58 BRT 2017


Leandro Nunes pushed to branch master at Noosfero / noosfero


Commits:
bd72f988 by Leandro Nunes dos Santos at 2017-06-21T17:12:50-03:00
should list people in blocks randomically

- - - - -
5d906b81 by Leandro Nunes at 2017-06-21T21:18:28+00:00
Merge branch 'display-person-list-randomically' into 'master'

should list people in blocks randomically

See merge request !1250
- - - - -


7 changed files:

- plugins/people_block/lib/friends_block.rb
- plugins/people_block/lib/members_block.rb
- plugins/people_block/lib/people_block.rb
- plugins/people_block/lib/people_block_base.rb
- plugins/people_block/test/unit/friends_block_test.rb
- plugins/people_block/test/unit/members_block_test.rb
- plugins/people_block/test/unit/people_block_test.rb


Changes:

=====================================
plugins/people_block/lib/friends_block.rb
=====================================
--- a/plugins/people_block/lib/friends_block.rb
+++ b/plugins/people_block/lib/friends_block.rb
@@ -13,7 +13,7 @@ class FriendsBlock < PeopleBlockBase
   end
 
   def profiles
-    owner.friends.no_templates
+    owner.friends.no_templates.order('RANDOM()')
   end
 
   def suggestions


=====================================
plugins/people_block/lib/members_block.rb
=====================================
--- a/plugins/people_block/lib/members_block.rb
+++ b/plugins/people_block/lib/members_block.rb
@@ -17,7 +17,10 @@ class MembersBlock < PeopleBlockBase
   end
 
   def profiles
-    role ? owner.members.with_role(role.id) : owner.members.no_templates
+    profiles = role ? owner.members.with_role(role.id) : owner.members.no_templates
+    seed = rand(profiles.count)
+    random_profiles = profiles.offset((seed - self.limit) < 0 ? 0 : (seed - self.limit))
+    random_profiles
   end
 
   def role


=====================================
plugins/people_block/lib/people_block.rb
=====================================
--- a/plugins/people_block/lib/people_block.rb
+++ b/plugins/people_block/lib/people_block.rb
@@ -13,6 +13,6 @@ class PeopleBlock < PeopleBlockBase
   end
 
   def profiles
-    owner.people.no_templates
+    owner.people.no_templates.order('RANDOM()')
   end
 end


=====================================
plugins/people_block/lib/people_block_base.rb
=====================================
--- a/plugins/people_block/lib/people_block_base.rb
+++ b/plugins/people_block/lib/people_block_base.rb
@@ -48,7 +48,7 @@ class PeopleBlockBase < Block
 
   def api_content(params = {})
     content = {}
-    content['people'] = Api::Entities::Person.represent(profiles.limit(self.limit)).as_json
+    content['people'] = Api::Entities::Person.represent(profiles.limit(self.limit).sort{|x,y| x.name <=> y.name}).as_json
     content['#'] = profiles.size
     content
   end


=====================================
plugins/people_block/test/unit/friends_block_test.rb
=====================================
--- a/plugins/people_block/test/unit/friends_block_test.rb
+++ b/plugins/people_block/test/unit/friends_block_test.rb
@@ -227,4 +227,31 @@ class FriendsBlockViewTest < ActionView::TestCase
     assert_equal 3, json["people"].size
     assert_equal 5, json["#"]
   end
+
+  should 'return friends randomically in api content' do
+    owner = fast_create(Person)
+    10.times do |n|
+      friend = fast_create(Person, :name => "Person #{n}")
+      owner.add_friend(friend)
+    end
+    block = FriendsBlock.new(limit: 3)
+    block.expects(:owner).returns(owner.reload).at_least_once
+    json_response_1 = block.api_content
+    json_response_2 = block.api_content
+    json_response_3 = block.api_content
+    assert !(json_response_1 == json_response_2 && json_response_2 == json_response_3)
+  end
+
+  should 'return friends in order of name in api content' do
+    owner = fast_create(Person)
+    10.times do |n|
+      friend = fast_create(Person, :name => "Person #{n}")
+      owner.add_friend(friend)
+    end
+    block = FriendsBlock.new(limit: 3)
+    block.expects(:owner).returns(owner.reload).at_least_once
+    json_response = block.api_content
+    assert (json_response['people'][0][:name] < json_response['people'][1][:name]) && (json_response['people'][1][:name] < json_response['people'][2][:name])
+  end
+
 end


=====================================
plugins/people_block/test/unit/members_block_test.rb
=====================================
--- a/plugins/people_block/test/unit/members_block_test.rb
+++ b/plugins/people_block/test/unit/members_block_test.rb
@@ -359,7 +359,7 @@ class MembersBlockViewTest < ActionView::TestCase
     assert_equivalent [person1.identifier, person2.identifier], json["people"].map {|p| p[:identifier]}
   end
 
-  should 'limit friends list in api content' do
+  should 'limit members list in api content' do
     owner = fast_create(Community)
     5.times do
       member = fast_create(Person)
@@ -389,4 +389,29 @@ class MembersBlockViewTest < ActionView::TestCase
     assert_equal 1, block.profile_list.size
   end
 
+  should 'return members randomically in api content' do
+    owner = fast_create(Community)
+    10.times do
+      member = fast_create(Person)
+      owner.add_member(member)
+    end
+    block = MembersBlock.new(limit: 3)
+    block.expects(:owner).returns(owner.reload).at_least_once
+    json_response_1 = block.api_content
+    json_response_2 = block.api_content
+    json_response_3 = block.api_content
+    assert !(json_response_1 == json_response_2 && json_response_2 == json_response_3)
+  end
+
+  should 'return members in order of name in api content' do
+    owner = fast_create(Community)
+    10.times do |n|
+      friend = fast_create(Person, :name => "Person #{n}")
+      owner.add_member(friend)
+    end
+    block = MembersBlock.new(limit: 3)
+    block.expects(:owner).returns(owner.reload).at_least_once
+    json_response = block.api_content
+    assert (json_response['people'][0][:name] < json_response['people'][1][:name]) && (json_response['people'][1][:name] < json_response['people'][2][:name])
+  end
 end


=====================================
plugins/people_block/test/unit/people_block_test.rb
=====================================
--- a/plugins/people_block/test/unit/people_block_test.rb
+++ b/plugins/people_block/test/unit/people_block_test.rb
@@ -215,4 +215,28 @@ class PeopleBlockViewTest < ActionView::TestCase
     assert_equal 2, block.profile_list.count
   end
 
+  should 'return people randomically in api content' do
+    owner = fast_create(Environment)
+    5.times do
+      fast_create(Person, :environment_id => owner.id)
+    end
+    block = PeopleBlock.new(limit: 3)
+    block.expects(:owner).returns(owner.reload).at_least_once
+    json_response_1 = block.api_content
+    json_response_2 = block.api_content
+    json_response_3 = block.api_content
+    assert !(json_response_1 == json_response_2 && json_response_2 == json_response_3)
+  end
+
+  should 'return people in order of name in api content' do
+    owner = fast_create(Environment)
+    10.times do
+      fast_create(Person, :environment_id => owner.id)
+    end
+    block = PeopleBlock.new(limit: 3)
+    block.expects(:owner).returns(owner.reload).at_least_once
+    json_response = block.api_content
+    assert (json_response['people'][0][:name] < json_response['people'][1][:name]) && (json_response['people'][1][:name] < json_response['people'][2][:name])
+  end
+
 end



View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/36ccd36352ca314a1d220f5d8154aff275fe31a9...5d906b81efd8f22a0309e2bd6519d6cfb25ab749

---
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/36ccd36352ca314a1d220f5d8154aff275fe31a9...5d906b81efd8f22a0309e2bd6519d6cfb25ab749
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20170621/1b1a4c66/attachment-0001.html>


More information about the Noosfero-dev mailing list