diff options
author | Jason Goodman <jgoodman@gitlab.com> | 2019-07-02 13:40:04 -0400 |
---|---|---|
committer | Jason Goodman <jgoodman@gitlab.com> | 2019-07-02 13:46:28 -0400 |
commit | 689d6d831fc9ff38a0e5e816b8d837eae79eace1 (patch) | |
tree | 573e3c2f8601f8dc62ba5a506eb65fbba8619223 | |
parent | 6a2981bb4e21f12e1b307f8f14fd6d48a4fc3946 (diff) | |
download | gitlab-ce-pre-releases-38105a.tar.gz |
Move default value for released_at into modelpre-releases-38105a
Add note that released_at defaults to current time in api
-rw-r--r-- | app/models/release.rb | 6 | ||||
-rw-r--r-- | app/services/releases/create_service.rb | 2 | ||||
-rw-r--r-- | lib/api/releases.rb | 4 | ||||
-rw-r--r-- | spec/models/release_spec.rb | 10 |
4 files changed, 18 insertions, 4 deletions
diff --git a/app/models/release.rb b/app/models/release.rb index 929dd6c9cde..459a7c29ad0 100644 --- a/app/models/release.rb +++ b/app/models/release.rb @@ -12,6 +12,10 @@ class Release < ApplicationRecord has_many :links, class_name: 'Releases::Link' + default_value_for :released_at, allows_nil: false do + Time.zone.now + end + accepts_nested_attributes_for :links, allow_destroy: true validates :description, :project, :tag, presence: true @@ -45,7 +49,7 @@ class Release < ApplicationRecord end def upcoming_release? - released_at > Time.zone.now + released_at.present? && released_at > Time.zone.now end private diff --git a/app/services/releases/create_service.rb b/app/services/releases/create_service.rb index 7d3d1febde0..5b13ac631ba 100644 --- a/app/services/releases/create_service.rb +++ b/app/services/releases/create_service.rb @@ -58,7 +58,7 @@ module Releases author: current_user, tag: tag.name, sha: tag.dereferenced_target.sha, - released_at: released_at || Time.zone.now, + released_at: released_at, links_attributes: params.dig(:assets, 'links') || [] ) end diff --git a/lib/api/releases.rb b/lib/api/releases.rb index d1fd1a8162d..fdd8406388e 100644 --- a/lib/api/releases.rb +++ b/lib/api/releases.rb @@ -54,7 +54,7 @@ module API requires :url, type: String end end - optional :released_at, type: DateTime, desc: 'The date when the release will be/was ready' + optional :released_at, type: DateTime, desc: 'The date when the release will be/was ready. Defaults to the current time.' end post ':id/releases' do authorize_create_release! @@ -78,7 +78,7 @@ module API requires :tag_name, type: String, desc: 'The name of the tag', as: :tag optional :name, type: String, desc: 'The name of the release' optional :description, type: String, desc: 'Release notes with markdown support' - optional :released_at, type: DateTime, desc: 'The date when the release will be/was ready' + optional :released_at, type: DateTime, desc: 'The date when the release will be/was ready. Defaults to the current time.' end put ':id/releases/:tag_name', requirements: RELEASE_ENDPOINT_REQUIREMETS do authorize_update_release! diff --git a/spec/models/release_spec.rb b/spec/models/release_spec.rb index 7c106ce6b85..e9d846e7291 100644 --- a/spec/models/release_spec.rb +++ b/spec/models/release_spec.rb @@ -64,4 +64,14 @@ RSpec.describe Release do is_expected.to all(be_a(Releases::Source)) end end + + describe '#upcoming_release?' do + context 'during the backfill migration when released_at could be nil' do + it 'handles a nil released_at value and returns false' do + allow(release).to receive(:released_at).and_return nil + + expect(release.upcoming_release?).to eq(false) + end + end + end end |