mirror of
https://github.com/opf/openproject.git
synced 2026-06-13 19:20:00 +00:00
Merge pull request #23683 from opf/bug/op-19423-hide-my-meetings-and-favourited-projects-widgets-for-anonymous-users
[OP-19423] Hide "my meetings" and "favourited projects" widgets for anonymous users
This commit is contained in:
@@ -40,6 +40,10 @@ module Grids
|
||||
def favorite_projects
|
||||
@favorite_projects ||= Project.visible.active.favorited_by(current_user).order(name: :asc).to_a
|
||||
end
|
||||
|
||||
def render?
|
||||
current_user.logged?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,11 +33,11 @@ require "rails_helper"
|
||||
RSpec.describe Grids::Widgets::FavoriteProjects, type: :component do
|
||||
include Rails.application.routes.url_helpers
|
||||
|
||||
shared_let(:admin) { create(:admin) }
|
||||
shared_let(:user) { create(:admin) }
|
||||
|
||||
current_user { admin }
|
||||
current_user { user }
|
||||
|
||||
subject(:rendered_component) { render_inline(described_class.new(current_user: admin)) }
|
||||
subject(:rendered_component) { render_inline(described_class.new(current_user: user)) }
|
||||
|
||||
context "with no favorite projects" do
|
||||
let!(:visible_project) { create(:project, name: "Visible project") }
|
||||
@@ -57,7 +57,7 @@ RSpec.describe Grids::Widgets::FavoriteProjects, type: :component do
|
||||
let!(:visible_project) { create(:project, name: "Visible project") }
|
||||
|
||||
before do
|
||||
create(:favorite, user: admin, favorited: favorite_project)
|
||||
create(:favorite, user:, favorited: favorite_project)
|
||||
end
|
||||
|
||||
it "renders only favorite projects and a link to all projects" do
|
||||
@@ -73,17 +73,17 @@ RSpec.describe Grids::Widgets::FavoriteProjects, type: :component do
|
||||
end
|
||||
|
||||
context "when a favorited project is not visible to the user" do
|
||||
let(:user) { create(:user) }
|
||||
let(:non_admin) { create(:user) }
|
||||
let!(:favorite_project) { create(:public_project, name: "Visible favorite project") }
|
||||
let!(:invisible_favorite_project) { create(:private_project, name: "Invisible favorite project") }
|
||||
|
||||
current_user { user }
|
||||
current_user { non_admin }
|
||||
|
||||
subject(:rendered_component) { render_inline(described_class.new(current_user: user)) }
|
||||
|
||||
before do
|
||||
create(:favorite, user:, favorited: favorite_project)
|
||||
create(:favorite, user:, favorited: invisible_favorite_project)
|
||||
create(:favorite, user: non_admin, favorited: favorite_project)
|
||||
create(:favorite, user: non_admin, favorited: invisible_favorite_project)
|
||||
end
|
||||
|
||||
it "only renders visible favorite projects" do
|
||||
@@ -92,4 +92,13 @@ RSpec.describe Grids::Widgets::FavoriteProjects, type: :component do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when being an anonymous user" do
|
||||
let!(:project) { create(:public_project, name: "Visible favorite project") }
|
||||
let(:user) { create(:anonymous) }
|
||||
|
||||
it "renders nothing" do
|
||||
expect(rendered_component.to_s).to be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -64,7 +64,7 @@ module Meetings
|
||||
end
|
||||
|
||||
def render?
|
||||
global_scoped? || project.module_enabled?("meetings")
|
||||
current_user.logged? && (global_scoped? || project.module_enabled?("meetings"))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -50,6 +50,8 @@ RSpec.describe Meetings::Widgets::Meetings, type: :component do
|
||||
|
||||
subject(:rendered_component) { render_component(project) }
|
||||
|
||||
before { login_as user }
|
||||
|
||||
shared_examples "empty-state without action" do
|
||||
it "renders empty blankslate without action" do
|
||||
expect(rendered_component).to have_test_selector("meetings-widget-empty")
|
||||
@@ -163,4 +165,13 @@ RSpec.describe Meetings::Widgets::Meetings, type: :component do
|
||||
# User has only view_meetings permission now
|
||||
it_behaves_like "empty-state without action"
|
||||
end
|
||||
|
||||
context "when being an anonymous user" do
|
||||
let(:project) { project_red }
|
||||
let(:user) { create(:anonymous) }
|
||||
|
||||
it "renders nothing" do
|
||||
expect(rendered_component.to_s).to be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user