diff options
Diffstat (limited to 'spec/features/dashboard')
-rw-r--r-- | spec/features/dashboard/archived_projects_spec.rb | 43 | ||||
-rw-r--r-- | spec/features/dashboard/projects_spec.rb | 81 | ||||
-rw-r--r-- | spec/features/dashboard/user_filters_projects_spec.rb | 45 |
3 files changed, 71 insertions, 98 deletions
diff --git a/spec/features/dashboard/archived_projects_spec.rb b/spec/features/dashboard/archived_projects_spec.rb deleted file mode 100644 index a5ba3e7e3cf..00000000000 --- a/spec/features/dashboard/archived_projects_spec.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'spec_helper' - -RSpec.describe 'Dashboard Archived Project', feature: true do - let(:user) { create :user } - let(:project) { create :project} - let(:archived_project) { create(:project, :archived) } - - before do - project.team << [user, :master] - archived_project.team << [user, :master] - - gitlab_sign_in(user) - - visit dashboard_projects_path - end - - it 'renders non archived projects' do - expect(page).to have_link(project.name) - expect(page).not_to have_link(archived_project.name) - end - - it 'renders all projects' do - click_link 'Show archived projects' - - expect(page).to have_link(project.name) - expect(page).to have_link(archived_project.name) - end - - it 'searchs archived projects', :js do - click_button 'Last updated' - click_link 'Show archived projects' - - expect(page).to have_link(project.name) - expect(page).to have_link(archived_project.name) - - fill_in 'project-filter-form-field', with: archived_project.name - - find('#project-filter-form-field').native.send_keys :return - - expect(page).not_to have_link(project.name) - expect(page).to have_link(archived_project.name) - end -end diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb index 2a8185ca669..d907b7bac13 100644 --- a/spec/features/dashboard/projects_spec.rb +++ b/spec/features/dashboard/projects_spec.rb @@ -1,27 +1,88 @@ require 'spec_helper' -RSpec.describe 'Dashboard Projects', feature: true do +RSpec.describe 'Dashboard Projects', feature: true, js: true do let(:user) { create(:user) } + let(:user2) { create(:user) } let(:project) { create(:project, name: "awesome stuff") } - let(:project2) { create(:project, :public, name: 'Community project') } + let(:project2) { create(:project, :public, name: 'Community project', namespace: user2.namespace) } + let(:archived_project) { create(:project, :archived) } before do project.team << [user, :developer] + project2.team << [user, :developer] + archived_project.team << [user, :developer] gitlab_sign_in(user) end - it 'shows the project the user in a member of in the list' do - visit dashboard_projects_path - expect(page).to have_content('awesome stuff') + describe 'displays projects in list' do + it 'shows the projects the user is a member of' do + visit dashboard_projects_path + expect(page).to have_content(project.name) + end + + it 'shows the last_activity_at attribute as the update date' do + now = Time.now + project.update_column(:last_activity_at, now) + + visit dashboard_projects_path + + expect(page).to have_xpath("//time[@datetime='#{now.getutc.iso8601}']") + end end - it 'shows the last_activity_at attribute as the update date' do - now = Time.now - project.update_column(:last_activity_at, now) + describe 'search and sort' do + before do + visit dashboard_projects_path + end + + it 'filters by name' do + expect(page).to have_content(project.name) + expect(page).to have_content(project2.name) + + fill_in 'name', with: project.name - visit dashboard_projects_path + expect(page).to have_content(project.name) + expect(page).not_to have_content(project2.name) + end - expect(page).to have_xpath("//time[@datetime='#{now.getutc.iso8601}']") + it 'shows projects owned by anyone' do + expect(page).to have_content(project.name) + expect(page).to have_content(project2.name) + end + + it 'shows projects owned by me' do + select_from_sort_dropdown('Owned by me') + + expect(page).to have_content(project.name) + expect(page).not_to have_content(project2.name) + end + + it 'hides archived projects' do + expect(page).not_to have_content(archived_project.name) + end + + it 'shows archived projects' do + select_from_sort_dropdown('Show archived projects') + + expect(page).to have_content(archived_project.name) + expect(page).to have_css(".label-warning", text: 'archived') + end + + it 'retains filter values when sorting' do + fill_in 'name', with: project.name + + select_from_sort_dropdown('Show archived projects') + + expect(page).to have_content(project.name) + expect(page).not_to have_content(project2.name) + end + + def select_from_sort_dropdown(label_text) + find('#sort-projects-dropdown').click() + filter = "//li[contains(., '#{label_text}')]" + + find(:xpath, filter).click() + end end context 'when on Starred projects tab' do diff --git a/spec/features/dashboard/user_filters_projects_spec.rb b/spec/features/dashboard/user_filters_projects_spec.rb deleted file mode 100644 index e9f34760143..00000000000 --- a/spec/features/dashboard/user_filters_projects_spec.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'spec_helper' - -describe 'Dashboard > User filters projects', :feature do - let(:user) { create(:user) } - let(:project) { create(:project, name: 'Victorialand', namespace: user.namespace) } - let(:user2) { create(:user) } - let(:project2) { create(:project, name: 'Treasure', namespace: user2.namespace) } - - before do - project.team << [user, :master] - - gitlab_sign_in(user) - end - - describe 'filtering personal projects' do - before do - project2.team << [user, :developer] - - visit dashboard_projects_path - end - - it 'filters by projects "Owned by me"' do - click_link 'Owned by me' - - expect(page).to have_css('.is-active', text: 'Owned by me') - expect(page).to have_content('Victorialand') - expect(page).not_to have_content('Treasure') - end - end - - describe 'filtering starred projects', :js do - before do - user.toggle_star(project) - - visit dashboard_projects_path - end - - it 'returns message when starred projects fitler returns no results' do - fill_in 'project-filter-form-field', with: 'Beta\n' - - expect(page).to have_content('No projects found') - expect(page).not_to have_content('You don\'t have starred projects yet') - end - end -end |