Skip to content

Commit

Permalink
Fix displaying blocked users in account follow pages (#9164) (#9255)
Browse files Browse the repository at this point in the history
* fix displaying block users

* able to render ressource

* fix gemfile test

* fix gemfile test

* fix gemfile test

* refactor change

* refactor change

* linter

* add unit test

* linter

* add trait

Co-authored-by: eliegaboriau <93646702+eliegaboriau@users.noreply.github.com>
  • Loading branch information
andreslucena and eliegaboriau committed May 10, 2022
1 parent d507169 commit 7583904
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 1 deletion.
2 changes: 1 addition & 1 deletion decidim-core/app/cells/decidim/followers_cell.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def show
end

def followers
@followers ||= model.followers.page(params[:page]).per(20)
@followers ||= model.followers.not_blocked.page(params[:page]).per(20)
end
end
end
1 change: 1 addition & 0 deletions decidim-core/app/models/decidim/user_base_entity.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ def only_public(klass, ids)
scope = scope.public_spaces if klass.try(:participatory_space?)
scope = scope.includes(:component) if klass.try(:has_component?)
scope = scope.filter(&:visible?) if klass.method_defined?(:visible?)
scope = scope.reject(&:blocked) if klass == Decidim::UserBaseEntity
scope
end
end
Expand Down
28 changes: 28 additions & 0 deletions decidim-core/spec/models/decidim/user_base_entity_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# frozen_string_literal: true

require "spec_helper"

module Decidim
describe UserBaseEntity do
subject { user }

let(:organization) { create(:organization) }
let(:user) { build(:user, organization: organization) }

let(:user_followed) { create(:user, organization: user.organization) }
let(:public_resource) { create(:dummy_resource, :published) }
let(:user_blocked) { create(:user, organization: user.organization, blocked: true) }

before do
create(:follow, user: user, followable: user_followed)
create(:follow, user: user, followable: public_resource)
create(:follow, user: user, followable: user_blocked)
end

describe "public followings" do
it "return all the things followed unless the blocked users" do
expect(subject.public_followings).to eq([public_resource, user_followed])
end
end
end
end
34 changes: 34 additions & 0 deletions decidim-core/spec/system/user_profile_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,40 @@
expect(page).not_to have_content(translated(non_public_resource.title))
end
end

context "when the user follows a blocked user" do
let(:blocked_user) { create(:user, :blocked) }

before do
create(:follow, user: user, followable: blocked_user)
end

it "lists only the unblocked followings" do
visit decidim.profile_path(user.nickname)

click_link "Follows"
expect(page).to have_content("Some of the resources followed are not public.")
expect(page).to have_content(translated(other_user.name))
expect(page).to have_content(translated(user_to_follow.name))
expect(page).to have_content(translated(public_resource.title))
end
end

context "when the user is followed by a blocked user" do
let(:blocked_user) { create(:user, :blocked) }

before do
create(:follow, user: blocked_user, followable: user)
end

it "lists only the unblocked followers" do
visit decidim.profile_path(user.nickname)

click_link "Followers"
expect(page).to have_content(translated(other_user.name))
expect(page).not_to have_content(translated(blocked_user.name))
end
end
end

describe "badges" do
Expand Down

0 comments on commit 7583904

Please sign in to comment.