diff options
Diffstat (limited to 'spec/features/dashboard/projects_spec.rb')
-rw-r--r-- | spec/features/dashboard/projects_spec.rb | 81 |
1 files changed, 71 insertions, 10 deletions
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 |