summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessio Caiazza <acaiazza@gitlab.com>2018-12-21 15:51:46 +0100
committerShinya Maeda <shinya@gitlab.com>2018-12-31 12:05:56 +0900
commita7aaad96f3cca5be2886bf3e18c81a7b06e5129f (patch)
tree5d9c5e548ce4a450606420e832d9e7dacdb3905e
parentb9aac409a5dfcdd1410c37ffb6eb30264d0b2784 (diff)
downloadgitlab-ce-a7aaad96f3cca5be2886bf3e18c81a7b06e5129f.tar.gz
ReleasesFinder will always return a relation
-rw-r--r--app/finders/releases_finder.rb6
-rw-r--r--app/models/release.rb2
-rw-r--r--lib/api/releases.rb2
-rw-r--r--spec/finders/releases_finder_spec.rb9
4 files changed, 9 insertions, 10 deletions
diff --git a/app/finders/releases_finder.rb b/app/finders/releases_finder.rb
index c185f77afa2..59e84198fde 100644
--- a/app/finders/releases_finder.rb
+++ b/app/finders/releases_finder.rb
@@ -6,11 +6,9 @@ class ReleasesFinder
@current_user = current_user
end
- # rubocop: disable CodeReuse/ActiveRecord
def execute
- return [] unless Ability.allowed?(@current_user, :read_release, @project)
+ return Release.none unless Ability.allowed?(@current_user, :read_release, @project)
- @project.releases.order('created_at DESC')
+ @project.releases.sorted
end
- # rubocop: enable CodeReuse/ActiveRecord
end
diff --git a/app/models/release.rb b/app/models/release.rb
index 06ed77f9079..27c9e35de56 100644
--- a/app/models/release.rb
+++ b/app/models/release.rb
@@ -11,6 +11,8 @@ class Release < ActiveRecord::Base
validates :description, :project, :tag, presence: true
+ scope :sorted, -> { order(created_at: :desc) }
+
delegate :repository, to: :project
def commit
diff --git a/lib/api/releases.rb b/lib/api/releases.rb
index c5c2e3d9594..1e6867ee154 100644
--- a/lib/api/releases.rb
+++ b/lib/api/releases.rb
@@ -21,7 +21,7 @@ module API
use :pagination
end
get ':id/releases' do
- releases = ::Kaminari.paginate_array(::ReleasesFinder.new(user_project, current_user).execute)
+ releases = ::ReleasesFinder.new(user_project, current_user).execute
present paginate(releases), with: Entities::Release
end
diff --git a/spec/finders/releases_finder_spec.rb b/spec/finders/releases_finder_spec.rb
index aa7163021cb..32ee15134a2 100644
--- a/spec/finders/releases_finder_spec.rb
+++ b/spec/finders/releases_finder_spec.rb
@@ -6,15 +6,14 @@ describe ReleasesFinder do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:repository) { project.repository }
- let(:v1_0_0) { create(:release, project: project, tag: 'v1.0.0')}
- let(:v1_1_0) { create(:release, project: project, tag: 'v1.1.0')}
+ let(:v1_0_0) { create(:release, project: project, tag: 'v1.0.0') }
+ let(:v1_1_0) { create(:release, project: project, tag: 'v1.1.0') }
subject { described_class.new(project, user)}
before do
- now = Time.now
- v1_0_0.update_attribute(:created_at, now - 2.days)
- v1_1_0.update_attribute(:created_at, now - 1.day)
+ v1_0_0.update_attribute(:created_at, 2.days.ago)
+ v1_1_0.update_attribute(:created_at, 1.day.ago)
end
describe '#execute' do