DeleteDraftComment: Don't bump 'lastUpdatedOn'
According to the implementation in change I3d8b13f70, posting a draft
inline comment to a change does not cause the change's 'lastUpdatedOn'
field to be updated.
However, the implementation of deleting a draft comment is inconsistent
with this, and does cause the 'lastUpdatedOn' to be updated.
Fix this inconsistency. Also add tests for both operations to confirm
that the timestamp is not updated.
Bug: Issue 4150
Change-Id: I222a702dd1dc529d4668a1dad6614a5839f63625
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/CommentsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/CommentsIT.java
index dd337c8..96a672f 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/CommentsIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/CommentsIT.java
@@ -152,6 +152,7 @@
public void putDraft() throws Exception {
for (Integer line : lines) {
PushOneCommit.Result r = createChange();
+ Timestamp origLastUpdated = r.getChange().change().getLastUpdatedOn();
String changeId = r.getChangeId();
String revId = r.getCommit().getName();
DraftInput comment = newDraft("file1", Side.REVISION, line, "comment 1");
@@ -165,6 +166,10 @@
result = getDraftComments(changeId, revId);
actual = Iterables.getOnlyElement(result.get(comment.path));
assertCommentInfo(comment, actual);
+
+ // Posting a draft comment doesn't cause lastUpdatedOn to change.
+ assertThat(r.getChange().change().getLastUpdatedOn())
+ .isEqualTo(origLastUpdated);
}
}
@@ -210,6 +215,7 @@
public void deleteDraft() throws Exception {
for (Integer line : lines) {
PushOneCommit.Result r = createChange();
+ Timestamp origLastUpdated = r.getChange().change().getLastUpdatedOn();
String changeId = r.getChangeId();
String revId = r.getCommit().getName();
DraftInput draft = newDraft("file1", Side.REVISION, line, "comment 1");
@@ -217,6 +223,10 @@
deleteDraft(changeId, revId, returned.id);
Map<String, List<CommentInfo>> drafts = getDraftComments(changeId, revId);
assertThat(drafts).isEmpty();
+
+ // Deleting a draft comment doesn't cause lastUpdatedOn to change.
+ assertThat(r.getChange().change().getLastUpdatedOn())
+ .isEqualTo(origLastUpdated);
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftComment.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftComment.java
index 5c2acb2..56dbfa7 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftComment.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftComment.java
@@ -102,6 +102,7 @@
setCommentRevId(c, patchListCache, ctx.getChange(), ps);
plcUtil.deleteComments(
ctx.getDb(), ctx.getUpdate(psId), Collections.singleton(c));
+ ctx.bumpLastUpdatedOn(false);
return true;
}
}