diff options
Diffstat (limited to 'spec/graphql/resolvers/issues_resolver_spec.rb')
-rw-r--r-- | spec/graphql/resolvers/issues_resolver_spec.rb | 78 |
1 files changed, 66 insertions, 12 deletions
diff --git a/spec/graphql/resolvers/issues_resolver_spec.rb b/spec/graphql/resolvers/issues_resolver_spec.rb index 53e0a9e3724..b7cc9bc6d71 100644 --- a/spec/graphql/resolvers/issues_resolver_spec.rb +++ b/spec/graphql/resolvers/issues_resolver_spec.rb @@ -125,12 +125,11 @@ describe Resolvers::IssuesResolver do end context 'when sorting by due date' do - let(:project) { create(:project) } - - let!(:due_issue1) { create(:issue, project: project, due_date: 3.days.from_now) } - let!(:due_issue2) { create(:issue, project: project, due_date: nil) } - let!(:due_issue3) { create(:issue, project: project, due_date: 2.days.ago) } - let!(:due_issue4) { create(:issue, project: project, due_date: nil) } + let_it_be(:project) { create(:project) } + let_it_be(:due_issue1) { create(:issue, project: project, due_date: 3.days.from_now) } + let_it_be(:due_issue2) { create(:issue, project: project, due_date: nil) } + let_it_be(:due_issue3) { create(:issue, project: project, due_date: 2.days.ago) } + let_it_be(:due_issue4) { create(:issue, project: project, due_date: nil) } it 'sorts issues ascending' do expect(resolve_issues(sort: :due_date_asc)).to eq [due_issue3, due_issue1, due_issue4, due_issue2] @@ -142,17 +141,72 @@ describe Resolvers::IssuesResolver do end context 'when sorting by relative position' do - let(:project) { create(:project) } - - let!(:relative_issue1) { create(:issue, project: project, relative_position: 2000) } - let!(:relative_issue2) { create(:issue, project: project, relative_position: nil) } - let!(:relative_issue3) { create(:issue, project: project, relative_position: 1000) } - let!(:relative_issue4) { create(:issue, project: project, relative_position: nil) } + let_it_be(:project) { create(:project) } + let_it_be(:relative_issue1) { create(:issue, project: project, relative_position: 2000) } + let_it_be(:relative_issue2) { create(:issue, project: project, relative_position: nil) } + let_it_be(:relative_issue3) { create(:issue, project: project, relative_position: 1000) } + let_it_be(:relative_issue4) { create(:issue, project: project, relative_position: nil) } it 'sorts issues ascending' do expect(resolve_issues(sort: :relative_position_asc)).to eq [relative_issue3, relative_issue1, relative_issue4, relative_issue2] end end + + context 'when sorting by priority' do + let_it_be(:project) { create(:project) } + let_it_be(:early_milestone) { create(:milestone, project: project, due_date: 10.days.from_now) } + let_it_be(:late_milestone) { create(:milestone, project: project, due_date: 30.days.from_now) } + let_it_be(:priority_label1) { create(:label, project: project, priority: 1) } + let_it_be(:priority_label2) { create(:label, project: project, priority: 5) } + let_it_be(:priority_issue1) { create(:issue, project: project, labels: [priority_label1], milestone: late_milestone) } + let_it_be(:priority_issue2) { create(:issue, project: project, labels: [priority_label2]) } + let_it_be(:priority_issue3) { create(:issue, project: project, milestone: early_milestone) } + let_it_be(:priority_issue4) { create(:issue, project: project) } + + it 'sorts issues ascending' do + expect(resolve_issues(sort: :priority_asc).items).to eq([priority_issue3, priority_issue1, priority_issue2, priority_issue4]) + end + + it 'sorts issues descending' do + expect(resolve_issues(sort: :priority_desc).items).to eq([priority_issue1, priority_issue3, priority_issue2, priority_issue4]) + end + end + + context 'when sorting by label priority' do + let_it_be(:project) { create(:project) } + let_it_be(:label1) { create(:label, project: project, priority: 1) } + let_it_be(:label2) { create(:label, project: project, priority: 5) } + let_it_be(:label3) { create(:label, project: project, priority: 10) } + let_it_be(:label_issue1) { create(:issue, project: project, labels: [label1]) } + let_it_be(:label_issue2) { create(:issue, project: project, labels: [label2]) } + let_it_be(:label_issue3) { create(:issue, project: project, labels: [label1, label3]) } + let_it_be(:label_issue4) { create(:issue, project: project) } + + it 'sorts issues ascending' do + expect(resolve_issues(sort: :label_priority_asc).items).to eq([label_issue3, label_issue1, label_issue2, label_issue4]) + end + + it 'sorts issues descending' do + expect(resolve_issues(sort: :label_priority_desc).items).to eq([label_issue2, label_issue3, label_issue1, label_issue4]) + end + end + + context 'when sorting by milestone due date' do + let_it_be(:project) { create(:project) } + let_it_be(:early_milestone) { create(:milestone, project: project, due_date: 10.days.from_now) } + let_it_be(:late_milestone) { create(:milestone, project: project, due_date: 30.days.from_now) } + let_it_be(:milestone_issue1) { create(:issue, project: project) } + let_it_be(:milestone_issue2) { create(:issue, project: project, milestone: early_milestone) } + let_it_be(:milestone_issue3) { create(:issue, project: project, milestone: late_milestone) } + + it 'sorts issues ascending' do + expect(resolve_issues(sort: :milestone_due_asc).items).to eq([milestone_issue2, milestone_issue3, milestone_issue1]) + end + + it 'sorts issues descending' do + expect(resolve_issues(sort: :milestone_due_desc).items).to eq([milestone_issue3, milestone_issue2, milestone_issue1]) + end + end end it 'returns issues user can see' do |