mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +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
|
def favorite_projects
|
||||||
@favorite_projects ||= Project.visible.active.favorited_by(current_user).order(name: :asc).to_a
|
@favorite_projects ||= Project.visible.active.favorited_by(current_user).order(name: :asc).to_a
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def render?
|
||||||
|
current_user.logged?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ require "rails_helper"
|
|||||||
RSpec.describe Grids::Widgets::FavoriteProjects, type: :component do
|
RSpec.describe Grids::Widgets::FavoriteProjects, type: :component do
|
||||||
include Rails.application.routes.url_helpers
|
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
|
context "with no favorite projects" do
|
||||||
let!(:visible_project) { create(:project, name: "Visible project") }
|
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") }
|
let!(:visible_project) { create(:project, name: "Visible project") }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
create(:favorite, user: admin, favorited: favorite_project)
|
create(:favorite, user:, favorited: favorite_project)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "renders only favorite projects and a link to all projects" do
|
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
|
end
|
||||||
|
|
||||||
context "when a favorited project is not visible to the user" do
|
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!(:favorite_project) { create(:public_project, name: "Visible favorite project") }
|
||||||
let!(:invisible_favorite_project) { create(:private_project, name: "Invisible 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)) }
|
subject(:rendered_component) { render_inline(described_class.new(current_user: user)) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
create(:favorite, user:, favorited: favorite_project)
|
create(:favorite, user: non_admin, favorited: favorite_project)
|
||||||
create(:favorite, user:, favorited: invisible_favorite_project)
|
create(:favorite, user: non_admin, favorited: invisible_favorite_project)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "only renders visible favorite projects" do
|
it "only renders visible favorite projects" do
|
||||||
@@ -92,4 +92,13 @@ RSpec.describe Grids::Widgets::FavoriteProjects, type: :component do
|
|||||||
end
|
end
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ module Meetings
|
|||||||
end
|
end
|
||||||
|
|
||||||
def render?
|
def render?
|
||||||
global_scoped? || project.module_enabled?("meetings")
|
current_user.logged? && (global_scoped? || project.module_enabled?("meetings"))
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ RSpec.describe Meetings::Widgets::Meetings, type: :component do
|
|||||||
|
|
||||||
subject(:rendered_component) { render_component(project) }
|
subject(:rendered_component) { render_component(project) }
|
||||||
|
|
||||||
|
before { login_as user }
|
||||||
|
|
||||||
shared_examples "empty-state without action" do
|
shared_examples "empty-state without action" do
|
||||||
it "renders empty blankslate without action" do
|
it "renders empty blankslate without action" do
|
||||||
expect(rendered_component).to have_test_selector("meetings-widget-empty")
|
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
|
# User has only view_meetings permission now
|
||||||
it_behaves_like "empty-state without action"
|
it_behaves_like "empty-state without action"
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user