summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Provaznik <jprovaznik@gitlab.com>2018-01-11 17:22:00 +0100
committerJan Provaznik <jprovaznik@gitlab.com>2018-01-11 17:27:28 +0100
commit720140c35347bc825ed39fe16de8c1a789d3043c (patch)
treee19301d03d1ab79d0be8e9dd0dca9ad4c9f632e0
parentb84ab70a6301728197382196b398e0a4905d97d5 (diff)
downloadgitlab-ce-4416-description-timestamp.tar.gz
Return last edited time instead of update time4416-description-timestamp
For issuable models we keep two timestamps: updated_at which is updated whenever any model attribute is changed, last_edited_at which is changed when only title or description is changed. In UI bellow description we display who and when updated the item. But last_updated_by (used for 'who') is mistakenly combined with updated_at (when), last_edited_at should be used instead. Closes #41247
-rw-r--r--app/controllers/concerns/issuable_actions.rb2
-rw-r--r--app/helpers/issuables_helper.rb2
-rw-r--r--spec/controllers/projects/issues_controller_spec.rb19
-rw-r--r--spec/helpers/issuables_helper_spec.rb4
4 files changed, 23 insertions, 4 deletions
diff --git a/app/controllers/concerns/issuable_actions.rb b/app/controllers/concerns/issuable_actions.rb
index 6025cc910a4..8252f8c3c3d 100644
--- a/app/controllers/concerns/issuable_actions.rb
+++ b/app/controllers/concerns/issuable_actions.rb
@@ -45,7 +45,7 @@ module IssuableActions
}
if issuable.edited?
- response[:updated_at] = issuable.updated_at
+ response[:updated_at] = issuable.last_edited_at
response[:updated_by_name] = issuable.last_edited_by.name
response[:updated_by_path] = user_path(issuable.last_edited_by)
end
diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb
index 62d4e030e32..9cba055bc91 100644
--- a/app/helpers/issuables_helper.rb
+++ b/app/helpers/issuables_helper.rb
@@ -244,7 +244,7 @@ module IssuablesHelper
return {} unless issuable.edited?
{
- updatedAt: issuable.updated_at.to_time.iso8601,
+ updatedAt: issuable.last_edited_at.to_time.iso8601,
updatedBy: {
name: issuable.last_edited_by.name,
path: user_path(issuable.last_edited_by)
diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb
index dbb42df5c50..e38e5c64e37 100644
--- a/spec/controllers/projects/issues_controller_spec.rb
+++ b/spec/controllers/projects/issues_controller_spec.rb
@@ -590,6 +590,25 @@ describe Projects::IssuesController do
id: id
end
+ context 'when an issue was edited' do
+ before do
+ project.add_developer(user)
+
+ issue.update!(last_edited_by: user, last_edited_at: Time.now)
+
+ sign_in(user)
+ end
+
+ it 'returns last edited time' do
+ go(id: issue.iid)
+
+ data = JSON.parse(response.body)
+
+ expect(data).to include('updated_at')
+ expect(data['updated_at'].to_json).to eq(issue.last_edited_at.to_json)
+ end
+ end
+
context 'when an issue was edited by a deleted user' do
let(:deleted_user) { create(:user) }
diff --git a/spec/helpers/issuables_helper_spec.rb b/spec/helpers/issuables_helper_spec.rb
index 6578f247715..8fe56db9228 100644
--- a/spec/helpers/issuables_helper_spec.rb
+++ b/spec/helpers/issuables_helper_spec.rb
@@ -128,7 +128,7 @@ describe IssuablesHelper do
let(:edited_issuable) { create(:issue, last_edited_by: user, created_at: 3.days.ago, updated_at: 2.days.ago, last_edited_at: 2.days.ago) }
let(:edited_updated_at_by) do
{
- updatedAt: edited_issuable.updated_at.to_time.iso8601,
+ updatedAt: edited_issuable.last_edited_at.to_time.iso8601,
updatedBy: {
name: user.name,
path: user_path(user)
@@ -142,7 +142,7 @@ describe IssuablesHelper do
context 'when updated by a deleted user' do
let(:edited_updated_at_by) do
{
- updatedAt: edited_issuable.updated_at.to_time.iso8601,
+ updatedAt: edited_issuable.last_edited_at.to_time.iso8601,
updatedBy: {
name: User.ghost.name,
path: user_path(User.ghost)