diff options
Diffstat (limited to 'spec/graphql/resolvers/merge_requests_resolver_spec.rb')
-rw-r--r-- | spec/graphql/resolvers/merge_requests_resolver_spec.rb | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/spec/graphql/resolvers/merge_requests_resolver_spec.rb b/spec/graphql/resolvers/merge_requests_resolver_spec.rb index e939edae779..aecffc487aa 100644 --- a/spec/graphql/resolvers/merge_requests_resolver_spec.rb +++ b/spec/graphql/resolvers/merge_requests_resolver_spec.rb @@ -6,16 +6,20 @@ RSpec.describe Resolvers::MergeRequestsResolver do include GraphqlHelpers let_it_be(:project) { create(:project, :repository) } + let_it_be(:milestone) { create(:milestone, project: project) } let_it_be(:current_user) { create(:user) } + let_it_be(:other_user) { create(:user) } let_it_be(:common_attrs) { { author: current_user, source_project: project, target_project: project } } let_it_be(:merge_request_1) { create(:merge_request, :simple, **common_attrs) } let_it_be(:merge_request_2) { create(:merge_request, :rebased, **common_attrs) } let_it_be(:merge_request_3) { create(:merge_request, :unique_branches, **common_attrs) } let_it_be(:merge_request_4) { create(:merge_request, :unique_branches, :locked, **common_attrs) } let_it_be(:merge_request_5) { create(:merge_request, :simple, :locked, **common_attrs) } - let_it_be(:merge_request_6) { create(:labeled_merge_request, :unique_branches, labels: create_list(:label, 2), **common_attrs) } + let_it_be(:merge_request_6) { create(:labeled_merge_request, :unique_branches, labels: create_list(:label, 2, project: project), **common_attrs) } + let_it_be(:merge_request_with_milestone) { create(:merge_request, :unique_branches, **common_attrs, milestone: milestone) } let_it_be(:other_project) { create(:project, :repository) } let_it_be(:other_merge_request) { create(:merge_request, source_project: other_project, target_project: other_project) } + let(:iid_1) { merge_request_1.iid } let(:iid_2) { merge_request_2.iid } let(:other_iid) { other_merge_request.iid } @@ -32,7 +36,7 @@ RSpec.describe Resolvers::MergeRequestsResolver do it 'returns all merge requests' do result = resolve_mr(project, {}) - expect(result).to contain_exactly(merge_request_1, merge_request_2, merge_request_3, merge_request_4, merge_request_5, merge_request_6) + expect(result).to contain_exactly(merge_request_1, merge_request_2, merge_request_3, merge_request_4, merge_request_5, merge_request_6, merge_request_with_milestone) end it 'returns only merge requests that the current user can see' do @@ -179,6 +183,20 @@ RSpec.describe Resolvers::MergeRequestsResolver do end end + context 'by milestone' do + it 'filters merge requests by milestone title' do + result = resolve_mr(project, milestone_title: milestone.title) + + expect(result).to eq([merge_request_with_milestone]) + end + + it 'does not find anything' do + result = resolve_mr(project, milestone_title: 'unknown-milestone') + + expect(result).to be_empty + end + end + describe 'combinations' do it 'requires all filters' do create(:merge_request, :closed, source_project: project, target_project: project, source_branch: merge_request_4.source_branch) @@ -188,6 +206,33 @@ RSpec.describe Resolvers::MergeRequestsResolver do expect(result.compact).to contain_exactly(merge_request_4) end end + + describe 'sorting' do + context 'when sorting by created' do + it 'sorts merge requests ascending' do + expect(resolve_mr(project, sort: 'created_asc')).to eq [merge_request_1, merge_request_2, merge_request_3, merge_request_4, merge_request_5, merge_request_6, merge_request_with_milestone] + end + + it 'sorts merge requests descending' do + expect(resolve_mr(project, sort: 'created_desc')).to eq [merge_request_with_milestone, merge_request_6, merge_request_5, merge_request_4, merge_request_3, merge_request_2, merge_request_1] + end + end + + context 'when sorting by merged at' do + before do + merge_request_1.metrics.update!(merged_at: 10.days.ago) + merge_request_3.metrics.update!(merged_at: 5.days.ago) + end + + it 'sorts merge requests ascending' do + expect(resolve_mr(project, sort: :merged_at_asc)).to eq [merge_request_1, merge_request_3, merge_request_with_milestone, merge_request_6, merge_request_5, merge_request_4, merge_request_2] + end + + it 'sorts merge requests descending' do + expect(resolve_mr(project, sort: :merged_at_desc)).to eq [merge_request_3, merge_request_1, merge_request_with_milestone, merge_request_6, merge_request_5, merge_request_4, merge_request_2] + end + end + end end def resolve_mr_single(project, iid) |