summaryrefslogtreecommitdiff
path: root/spec/contexts/issues
diff options
context:
space:
mode:
authorJason Blanchard <jas.blanchard@gmail.com>2013-11-20 17:59:50 -0500
committerJason Blanchard <jas.blanchard@gmail.com>2013-11-23 15:04:50 -0500
commitb76948e6c92ce445249116ef86dbbd4d0b57573a (patch)
treebd731e10171339dc4e3ee8f09ee0673c0c22c469 /spec/contexts/issues
parent983bf359945bc9d4ec1e9581e6bc35dac65e3a3b (diff)
downloadgitlab-ce-b76948e6c92ce445249116ef86dbbd4d0b57573a.tar.gz
Added sorting to project issues page
Diffstat (limited to 'spec/contexts/issues')
-rw-r--r--spec/contexts/issues/list_context_spec.rb77
1 files changed, 77 insertions, 0 deletions
diff --git a/spec/contexts/issues/list_context_spec.rb b/spec/contexts/issues/list_context_spec.rb
new file mode 100644
index 00000000000..63f2f3859fa
--- /dev/null
+++ b/spec/contexts/issues/list_context_spec.rb
@@ -0,0 +1,77 @@
+require 'spec_helper'
+
+describe Issues::ListContext do
+
+ let(:user) { create(:user) }
+ let(:project) { create(:project, creator: user) }
+
+ titles = ['foo','bar','baz']
+ titles.each_with_index do |title, index|
+ let!(title.to_sym) { create(:issue, title: title, project: project, created_at: Time.now - (index * 60)) }
+ end
+
+ describe 'sorting' do
+
+ it 'sorts by newest' do
+ params = {:sort => 'newest'}
+
+ issues = Issues::ListContext.new(project, user, params).execute
+ issues.first.should eq foo
+ end
+
+ it 'sorts by oldest' do
+ params = {:sort => 'oldest'}
+
+ issues = Issues::ListContext.new(project, user, params).execute
+ issues.first.should eq baz
+ end
+
+ it 'sorts by recently updated' do
+ params = {:sort => 'recently_updated'}
+ baz.updated_at = Time.now + 10
+ baz.save
+
+ issues = Issues::ListContext.new(project, user, params).execute
+ issues.first.should eq baz
+ end
+
+ it 'sorts by least recently updated' do
+ params = {:sort => 'last_updated'}
+ bar.updated_at = Time.now - 10
+ bar.save
+
+ issues = Issues::ListContext.new(project, user, params).execute
+ issues.first.should eq bar
+ end
+
+ describe 'sorting by milestone' do
+
+ let(:newer_due_milestone) { create(:milestone, :due_date => '2013-12-11') }
+ let(:later_due_milestone) { create(:milestone, :due_date => '2013-12-12') }
+
+ before :each do
+ foo.milestone = newer_due_milestone
+ foo.save
+ bar.milestone = later_due_milestone
+ bar.save
+ end
+
+ it 'sorts by most recently due milestone' do
+ params = {:sort => 'milestone_due_soon'}
+
+ issues = Issues::ListContext.new(project, user, params).execute
+ issues.first.should eq foo
+
+ end
+
+ it 'sorts by least recently due milestone' do
+ params = {:sort => 'milestone_due_later'}
+
+ issues = Issues::ListContext.new(project, user, params).execute
+ issues.first.should eq bar
+ end
+
+ end
+ end
+
+end