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