From a7aaad96f3cca5be2886bf3e18c81a7b06e5129f Mon Sep 17 00:00:00 2001 From: Alessio Caiazza Date: Fri, 21 Dec 2018 15:51:46 +0100 Subject: ReleasesFinder will always return a relation --- app/finders/releases_finder.rb | 6 ++---- app/models/release.rb | 2 ++ lib/api/releases.rb | 2 +- spec/finders/releases_finder_spec.rb | 9 ++++----- 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 -- cgit v1.2.1