From 8be495318e6d477f98dd08de11261996faa050f2 Mon Sep 17 00:00:00 2001 From: Clement Ho <ClemMakesApps@gmail.com> Date: Mon, 14 Nov 2016 18:19:40 -0600 Subject: [PATCH] Add more specs --- spec/features/issues/filter_issues_spec.rb | 106 ++++++++++++++---- .../merge_requests/reset_filters_spec.rb | 2 +- 2 files changed, 83 insertions(+), 25 deletions(-) diff --git a/spec/features/issues/filter_issues_spec.rb b/spec/features/issues/filter_issues_spec.rb index c790f350b2..0eed0ed427 100644 --- a/spec/features/issues/filter_issues_spec.rb +++ b/spec/features/issues/filter_issues_spec.rb @@ -17,6 +17,8 @@ describe 'Filter issues', feature: true do let!(:milestone) { create(:milestone, title: "8", project: project) } let!(:multiple_words_label) { create(:label, project: project, title: "Two words") } + let!(:closed_issue) { create(:issue, title: 'bug that is closed', project: project, state: :closed) } + def input_filtered_search(search_term) filtered_search = find('.filtered-search') filtered_search.set(search_term) @@ -83,7 +85,8 @@ describe 'Filter issues', feature: true do multiple_words_label_issue.labels << multiple_words_label future_milestone = create(:milestone, title: "future", project: project, due_date: Time.now + 1.month) - issue_with_future_milestone = create(:issue, + + create(:issue, title: "Issue with future milestone", milestone: future_milestone, project: project) @@ -143,7 +146,7 @@ describe 'Filter issues', feature: true do it 'filters issues by no assignee' do input_filtered_search("assignee:none") - expect_issues_list_count(8) + expect_issues_list_count(8, 1) end it 'filters issues by invalid assignee' do @@ -155,27 +158,27 @@ describe 'Filter issues', feature: true do end end - # context 'assignee with other filters', js: true do - # it 'filters issues by searched assignee and text' do - # input_filtered_search("assignee:@#{user.username} searchTerm") - # expect_issues_list_count(2) - # end + context 'assignee with other filters', js: true do + it 'filters issues by searched assignee and text' do + input_filtered_search("assignee:@#{user.username} searchTerm") + expect_issues_list_count(2) + end - # it 'filters issues by searched assignee, author and text' do - # input_filtered_search("assignee:@#{user.username} author:@#{user.username} searchTerm") - # expect_issues_list_count(2) - # end + it 'filters issues by searched assignee, author and text' do + input_filtered_search("assignee:@#{user.username} author:@#{user.username} searchTerm") + expect_issues_list_count(2) + end - # it 'filters issues by searched assignee, author, label, text' do - # input_filtered_search("assignee:@#{user.username} author:@#{user.username} label:~#{caps_sensitive_label.title} searchTerm") - # expect_issues_list_count(1) - # end + it 'filters issues by searched assignee, author, label, text' do + input_filtered_search("assignee:@#{user.username} author:@#{user.username} label:~#{caps_sensitive_label.title} searchTerm") + expect_issues_list_count(1) + end - # it 'filters issues by searched assignee, author, label, milestone and text' do - # input_filtered_search("assignee:@#{user.username} author:@#{user.username} label:~#{caps_sensitive_label.title} milestone:%#{milestone.title} searchTerm") - # expect_issues_list_count(1) - # end - # end + it 'filters issues by searched assignee, author, label, milestone and text' do + input_filtered_search("assignee:@#{user.username} author:@#{user.username} label:~#{caps_sensitive_label.title} milestone:%#{milestone.title} searchTerm") + expect_issues_list_count(1) + end + end context 'sorting', js: true do # TODO @@ -191,7 +194,7 @@ describe 'Filter issues', feature: true do it 'filters issues by no label' do input_filtered_search("label:none") - expect_issues_list_count(9) + expect_issues_list_count(9, 1) end it 'filters issues by invalid label' do @@ -323,7 +326,7 @@ describe 'Filter issues', feature: true do it 'filters issues by no milestone' do input_filtered_search("milestone:none") - expect_issues_list_count(7) + expect_issues_list_count(7, 1) end it 'filters issues by upcoming milestones' do @@ -376,7 +379,7 @@ describe 'Filter issues', feature: true do context 'only text', js: true do it 'filters issues by searched text' do input_filtered_search('Bug') - expect_issues_list_count(4) + expect_issues_list_count(4, 1) end it 'filters issues by multiple searched text' do @@ -468,7 +471,62 @@ describe 'Filter issues', feature: true do end context 'sorting', js: true do - # TODO + it 'sorts by oldest updated' do + create(:issue, + title: '3 days ago', + project: project, + author: user, + created_at: 3.days.ago, + updated_at: 3.days.ago) + + old_issue = create(:issue, + title: '5 days ago', + project: project, + author: user, + created_at: 5.days.ago, + updated_at: 5.days.ago) + + input_filtered_search('days ago') + expect_issues_list_count(2) + + sort_toggle = find('.filtered-search-container .dropdown-toggle') + sort_toggle.click + + find('.filtered-search-container .dropdown-menu li a', text: 'Oldest updated').click + wait_for_ajax + + expect(find('.issues-list .issue:first-of-type .issue-title-text a')).to have_content(old_issue.title) + end + end + end + + describe 'retains filter when switching issue states', js: true do + before do + input_filtered_search('bug') + expect_issues_list_count(4, 1) + end + + it 'open state' do + find('.issues-state-filters a', text: 'Closed').click + wait_for_ajax + + find('.issues-state-filters a', text: 'Open').click + wait_for_ajax + + expect(page).to have_selector('.issues-list .issue', count: 4) + end + + it 'closed state' do + find('.issues-state-filters a', text: 'Closed').click + wait_for_ajax + expect(page).to have_selector('.issues-list .issue', count: 1) + expect(find('.issues-list .issue:first-of-type .issue-title-text a')).to have_content(closed_issue.title) + end + + it 'all state' do + find('.issues-state-filters a', text: 'All').click + wait_for_ajax + expect(page).to have_selector('.issues-list .issue', count: 5) end end diff --git a/spec/features/merge_requests/reset_filters_spec.rb b/spec/features/merge_requests/reset_filters_spec.rb index 2e468f2edf..3a7ece7e1d 100644 --- a/spec/features/merge_requests/reset_filters_spec.rb +++ b/spec/features/merge_requests/reset_filters_spec.rb @@ -9,7 +9,7 @@ feature 'Issues filter reset button', feature: true, js: true do let!(:milestone) { create(:milestone, project: project) } let!(:bug) { create(:label, project: project, name: 'bug')} let!(:mr1) { create(:merge_request, title: "Feature", source_project: project, target_project: project, source_branch: "Feature", milestone: milestone, author: user, assignee: user) } - let!(:mr2) { create(:merge_request, title:"Bugfix1", source_project: project, target_project: project, source_branch: "Bugfix1") } + let!(:mr2) { create(:merge_request, title: "Bugfix1", source_project: project, target_project: project, source_branch: "Bugfix1") } let(:merge_request_css) { '.merge-request' } -- 2.30.9