[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