diff options
Diffstat (limited to 'spec/features/explore/user_explores_projects_spec.rb')
-rw-r--r-- | spec/features/explore/user_explores_projects_spec.rb | 107 |
1 files changed, 77 insertions, 30 deletions
diff --git a/spec/features/explore/user_explores_projects_spec.rb b/spec/features/explore/user_explores_projects_spec.rb index e217638f62b..bf4d6c946e1 100644 --- a/spec/features/explore/user_explores_projects_spec.rb +++ b/spec/features/explore/user_explores_projects_spec.rb @@ -3,65 +3,112 @@ require 'spec_helper' RSpec.describe 'User explores projects' do - let_it_be(:archived_project) { create(:project, :archived) } - let_it_be(:internal_project) { create(:project, :internal) } - let_it_be(:private_project) { create(:project, :private) } - let_it_be(:public_project) { create(:project, :public) } - - context 'when not signed in' do - context 'when viewing public projects' do - before do - visit(explore_projects_path) + context 'when some projects exist' do + let_it_be(:archived_project) { create(:project, :archived) } + let_it_be(:internal_project) { create(:project, :internal) } + let_it_be(:private_project) { create(:project, :private) } + let_it_be(:public_project) { create(:project, :public) } + + context 'when not signed in' do + context 'when viewing public projects' do + before do + visit(explore_projects_path) + end + + include_examples 'shows public projects' end - include_examples 'shows public projects' + context 'when visibility is restricted to public' do + before do + stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC]) + visit(explore_projects_path) + end + + it 'redirects to login page' do + expect(page).to have_current_path(new_user_session_path) + end + end end - context 'when visibility is restricted to public' do + context 'when signed in' do + let_it_be(:user) { create(:user) } + before do - stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC]) - visit(explore_projects_path) + sign_in(user) + + stub_feature_flags(project_list_filter_bar: false) + end + + shared_examples 'empty search results' do + it 'shows correct empty state message', :js do + fill_in 'name', with: 'zzzzzzzzzzzzzzzzzzz' + + expect(page).to have_content('Explore public groups to find projects to contribute to.') + end end - it 'redirects to login page' do - expect(page).to have_current_path(new_user_session_path) + context 'when viewing public projects' do + before do + visit(explore_projects_path) + end + + include_examples 'shows public and internal projects' + include_examples 'empty search results' + end + + context 'when viewing most starred projects' do + before do + visit(starred_explore_projects_path) + end + + include_examples 'shows public and internal projects' + include_examples 'empty search results' + end + + context 'when viewing trending projects' do + before do + [archived_project, public_project].each { |project| create(:note_on_issue, project: project) } + + TrendingProject.refresh! + + visit(trending_explore_projects_path) + end + + include_examples 'shows public projects' + include_examples 'empty search results' end end end - context 'when signed in' do - let_it_be(:user) { create(:user) } - - before do - sign_in(user) + context 'when there are no projects' do + shared_examples 'explore page empty state' do + it 'shows correct empty state message' do + expect(page).to have_content('Explore public groups to find projects to contribute to.') + end end context 'when viewing public projects' do before do - visit(explore_projects_path) + visit explore_projects_path end - include_examples 'shows public and internal projects' + it_behaves_like 'explore page empty state' end context 'when viewing most starred projects' do before do - visit(starred_explore_projects_path) + visit starred_explore_projects_path end - include_examples 'shows public and internal projects' + it_behaves_like 'explore page empty state' end context 'when viewing trending projects' do before do - [archived_project, public_project].each { |project| create(:note_on_issue, project: project) } - - TrendingProject.refresh! - - visit(trending_explore_projects_path) + visit trending_explore_projects_path end - include_examples 'shows public projects' + it_behaves_like 'explore page empty state' end end end |