summaryrefslogtreecommitdiff
path: root/spec/features/dashboard/projects_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/dashboard/projects_spec.rb')
-rw-r--r--spec/features/dashboard/projects_spec.rb81
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