Skip to content

Commit

Permalink
[#55254] Switch to show favorite projects is shown for anonymous user
Browse files Browse the repository at this point in the history
  • Loading branch information
dombesz authored and oliverguenther committed Jun 10, 2024
1 parent d61811d commit 1fe8776
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
></h1>

<spot-toggle
*ngIf="this.currentUserService.isLoggedIn"
[options]="displayModeOptions"
[(ngModel)]="displayMode"
></spot-toggle>
Expand Down
146 changes: 81 additions & 65 deletions spec/features/projects/favorite_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
require_relative "../../../modules/my_page/spec/support/pages/my/page"

RSpec.describe "Favorite projects", :js do
shared_let(:project) { create(:project, name: "My favorite!", enabled_module_names: []) }
shared_let(:other_project) { create(:project, name: "Other project", enabled_module_names: []) }
shared_let(:project) { create(:public_project, name: "My favorite!", enabled_module_names: []) }
shared_let(:other_project) { create(:public_project, name: "Other project", enabled_module_names: []) }
shared_let(:user) do
create(:user,
member_with_permissions: {
Expand All @@ -44,100 +44,116 @@
let(:my_page) do
Pages::My::Page.new
end
context "as a user" do
before do
login_as user
end

before do
login_as user
end
it "allows favoriting and unfavoriting projects" do
visit project_path(project)
expect(page).to have_css "a", accessible_name: "Add to favorites"

it "allows favoriting and unfavoriting projects" do
visit project_path(project)
expect(page).to have_selector 'a', accessible_name: "Add to favorites"
click_link_or_button(accessible_name: "Add to favorites")

click_link_or_button(accessible_name: "Add to favorites")
expect(page).to have_css "a", accessible_name: "Remove from favorite"

expect(page).to have_selector 'a', accessible_name: "Remove from favorite"
project.reload
expect(project).to be_favored_by(user)

project.reload
expect(project).to be_favored_by(user)
projects_page.visit!
projects_page.open_filters
projects_page.filter_by_favored "yes"

projects_page.visit!
projects_page.open_filters
projects_page.filter_by_favored "yes"
expect(page).to have_text "My favorite!"

expect(page).to have_text 'My favorite!'
projects_page.visit!
projects_page.open_filters
projects_page.filter_by_favored "no"

projects_page.visit!
projects_page.open_filters
projects_page.filter_by_favored "no"
expect(page).to have_no_text "My favorite!"

visit home_path

expect(page).to have_no_text 'My favorite!'
expect(page).to have_text "Favorite projects"
expect(page).to have_test_selector "favorite-project", text: "My favorite!"

visit home_path
retry_block do
top_menu.toggle unless top_menu.open?
top_menu.expect_open

expect(page).to have_text 'Favorite projects'
expect(page).to have_test_selector 'favorite-project', text: 'My favorite!'
# projects are displayed initially
top_menu.expect_result project.name
top_menu.expect_result other_project.name
end

retry_block do
top_menu.toggle unless top_menu.open?
top_menu.expect_open
top_menu.switch_mode "Favorites"

# projects are displayed initially
top_menu.expect_result project.name
top_menu.expect_result other_project.name
top_menu.expect_no_result other_project.name
end

top_menu.switch_mode "Favorites"
context "when project is favored" do
before do
project.add_favoring_user(user)
other_project.add_favoring_user(user)
other_project.update! active: false
end

top_menu.expect_result project.name
top_menu.expect_no_result other_project.name
end
it "does not show archived projects" do
visit home_path

context "when projct is favored" do
before do
project.add_favoring_user(user)
other_project.add_favoring_user(user)
other_project.update! active: false
end
expect(page).to have_text "Favorite projects"
expect(page).to have_test_selector "favorite-project", text: "My favorite!"
expect(page).to have_no_text "Other project"

it "does not show archived projects" do
visit home_path
my_page.visit!
my_page.add_widget(1, 1, :within, "Favorite projects")
expect(page).to have_text "My favorite!"
end
end

expect(page).to have_text 'Favorite projects'
expect(page).to have_test_selector 'favorite-project', text: 'My favorite!'
expect(page).to have_no_text 'Other project'
context "when favoriting only one subproject" do
before do
project.update! parent: other_project
project.add_favoring_user(user)
end

my_page.visit!
my_page.add_widget(1, 1, :within, "Favorite projects")
expect(page).to have_text 'My favorite!'
end
end
it "still shows up in top menu (Regression #54729)" do
visit home_path

context "favoriting only one subproject" do
before do
project.update! parent: other_project
project.add_favoring_user(user)
end
expect(page).to have_text "Favorite projects"
expect(page).to have_test_selector "favorite-project", text: "My favorite!"

it "still shows up in top menu (Regression #54729)" do
visit home_path
retry_block do
top_menu.toggle unless top_menu.open?
top_menu.expect_open

expect(page).to have_text 'Favorite projects'
expect(page).to have_test_selector 'favorite-project', text: 'My favorite!'
# projects are displayed initially
top_menu.expect_result project.name
top_menu.expect_result other_project.name
end

retry_block do
top_menu.toggle unless top_menu.open?
top_menu.expect_open
top_menu.switch_mode "Favorites"

# projects are displayed initially
top_menu.expect_result project.name
# Parent is also shown
top_menu.expect_result other_project.name
end
end
end

top_menu.switch_mode "Favorites"
context "as an Anonymous User with not login required", with_settings: { login_required: false } do
it "does not shows favored projects" do
visit project_path(project)

top_menu.expect_result project.name
# Parent is also shown
top_menu.expect_result other_project.name
retry_block do
top_menu.toggle unless top_menu.open?
top_menu.expect_open

within(".op-project-list-modal--header") do
expect(page).to have_no_css("[data-test-selector=\"spot-toggle--option\"]", text: "Favorites")
end
end
end
end
end

0 comments on commit 1fe8776

Please sign in to comment.