diff options
author | Simon Knox <psimyn@gmail.com> | 2017-03-26 00:39:19 +1100 |
---|---|---|
committer | Simon Knox <psimyn@gmail.com> | 2017-06-27 20:46:39 +1000 |
commit | b7c71c2ea3e0446add7631ae95dc20486198965b (patch) | |
tree | ed7639b881c6d54e5fbfdcaef642c21aa7524dc9 /spec/features/dashboard/projects_spec.rb | |
parent | 1a9317b821bc625eaad8550298d288bfc29e53d7 (diff) | |
download | gitlab-ce-29321-project-search.tar.gz |
update sort links when changing filter value on Projects page29321-project-search
change all the links to form inputs
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 |