summaryrefslogtreecommitdiff
path: root/spec/features/projects
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-04-05 09:09:24 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-04-05 09:09:24 +0000
commitb5e513dbefdc7d27ddfd800c81b80e55f086f3f5 (patch)
tree518dd196e4385f803e670d134a73dd8deeb9b75e /spec/features/projects
parentb6d0149b925c57cbfff0f2bade605259152e4eea (diff)
downloadgitlab-ce-b5e513dbefdc7d27ddfd800c81b80e55f086f3f5.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/features/projects')
-rw-r--r--spec/features/projects/milestones/milestones_sorting_spec.rb62
1 files changed, 34 insertions, 28 deletions
diff --git a/spec/features/projects/milestones/milestones_sorting_spec.rb b/spec/features/projects/milestones/milestones_sorting_spec.rb
index 565c61cfaa0..2ad820e4a06 100644
--- a/spec/features/projects/milestones/milestones_sorting_spec.rb
+++ b/spec/features/projects/milestones/milestones_sorting_spec.rb
@@ -5,49 +5,55 @@ require 'spec_helper'
RSpec.describe 'Milestones sorting', :js do
let(:user) { create(:user) }
let(:project) { create(:project, name: 'test', namespace: user.namespace) }
+ let(:milestones_for_sort_by) do
+ {
+ 'Due later' => %w[b c a],
+ 'Name, ascending' => %w[a b c],
+ 'Name, descending' => %w[c b a],
+ 'Start later' => %w[a c b],
+ 'Start soon' => %w[b c a],
+ 'Due soon' => %w[a c b]
+ }
+ end
+
+ let(:ordered_milestones) do
+ ['Due soon', 'Due later', 'Start soon', 'Start later', 'Name, ascending', 'Name, descending']
+ end
before do
- # Milestones
- create(:milestone,
- due_date: 10.days.from_now,
- created_at: 2.hours.ago,
- title: "aaa", project: project)
- create(:milestone,
- due_date: 11.days.from_now,
- created_at: 1.hour.ago,
- title: "bbb", project: project)
+ create(:milestone, start_date: 7.days.from_now, due_date: 10.days.from_now, title: "a", project: project)
+ create(:milestone, start_date: 6.days.from_now, due_date: 11.days.from_now, title: "c", project: project)
+ create(:milestone, start_date: 5.days.from_now, due_date: 12.days.from_now, title: "b", project: project)
sign_in(user)
end
- it 'visit project milestones and sort by due_date_asc' do
+ it 'visit project milestones and sort by various orders' do
visit project_milestones_path(project)
expect(page).to have_button('Due soon')
- # assert default sorting
+ # assert default sorting order
within '.milestones' do
- expect(page.all('ul.content-list > li').first.text).to include('aaa')
- expect(page.all('ul.content-list > li').last.text).to include('bbb')
+ expect(page.all('ul.content-list > li strong > a').map(&:text)).to eq(%w[a c b])
end
- click_button 'Due soon'
+ # assert milestones listed for given sort order
+ selected_sort_order = 'Due soon'
+ milestones_for_sort_by.each do |sort_by, expected_milestones|
+ within '[data-testid=milestone_sort_by_dropdown]' do
+ click_button selected_sort_order
+ milestones = find('.gl-new-dropdown-contents').all('.gl-new-dropdown-item-text-wrapper p').map(&:text)
+ expect(milestones).to eq(ordered_milestones)
- sort_options = find('ul.dropdown-menu-sort li').all('a').collect(&:text)
+ click_button sort_by
+ expect(page).to have_button(sort_by)
+ end
- expect(sort_options[0]).to eq('Due soon')
- expect(sort_options[1]).to eq('Due later')
- expect(sort_options[2]).to eq('Start soon')
- expect(sort_options[3]).to eq('Start later')
- expect(sort_options[4]).to eq('Name, ascending')
- expect(sort_options[5]).to eq('Name, descending')
+ within '.milestones' do
+ expect(page.all('ul.content-list > li strong > a').map(&:text)).to eq(expected_milestones)
+ end
- click_link 'Due later'
-
- expect(page).to have_button('Due later')
-
- within '.milestones' do
- expect(page.all('ul.content-list > li').first.text).to include('bbb')
- expect(page.all('ul.content-list > li').last.text).to include('aaa')
+ selected_sort_order = sort_by
end
end
end