Merge "Add concept of auto generated messages to Gerrit (backend)"
This commit is contained in:
@@ -18,6 +18,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|||||||
import static com.google.common.base.Preconditions.checkState;
|
import static com.google.common.base.Preconditions.checkState;
|
||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
import com.google.gerrit.common.Nullable;
|
||||||
import com.google.gerrit.reviewdb.client.Account;
|
import com.google.gerrit.reviewdb.client.Account;
|
||||||
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
||||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||||
@@ -43,22 +44,50 @@ import java.util.Objects;
|
|||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class ChangeMessagesUtil {
|
public class ChangeMessagesUtil {
|
||||||
public static ChangeMessage newMessage(BatchUpdate.ChangeContext ctx,
|
public final static String TAG_ABANDON =
|
||||||
String body) throws OrmException {
|
"autogenerated:gerrit:abandon";
|
||||||
|
public final static String TAG_CHERRY_PICK_CHANGE =
|
||||||
|
"autogenerated:gerrit:cherryPickChange";
|
||||||
|
public final static String TAG_DELETE_ASSIGNEE =
|
||||||
|
"autogenerated:gerrit:deleteAssignee";
|
||||||
|
public final static String TAG_DELETE_REVIEWER =
|
||||||
|
"autogenerated:gerrit:deleteReviewer";
|
||||||
|
public final static String TAG_DELETE_VOTE =
|
||||||
|
"autogenerated:gerrit:deleteVote";
|
||||||
|
public final static String TAG_MERGED =
|
||||||
|
"autogenerated:gerrit:merged";
|
||||||
|
public final static String TAG_MOVE =
|
||||||
|
"autogenerated:gerrit:move";
|
||||||
|
public final static String TAG_RESTORE =
|
||||||
|
"autogenerated:gerrit:restore";
|
||||||
|
public final static String TAG_REVERT =
|
||||||
|
"autogenerated:gerrit:revert";
|
||||||
|
public final static String TAG_SET_ASSIGNEE =
|
||||||
|
"autogenerated:gerrit:setAssignee";
|
||||||
|
public final static String TAG_SET_HASHTAGS =
|
||||||
|
"autogenerated:gerrit:setHashtag";
|
||||||
|
public final static String TAG_SET_TOPIC =
|
||||||
|
"autogenerated:gerrit:setTopic";
|
||||||
|
public final static String TAG_UPLOADED_PATCH_SET =
|
||||||
|
"autogenerated:gerrit:newPatchSet";
|
||||||
|
|
||||||
|
public static ChangeMessage newMessage( BatchUpdate.ChangeContext ctx,
|
||||||
|
String body, @Nullable String tag) throws OrmException {
|
||||||
return newMessage(
|
return newMessage(
|
||||||
ctx.getDb(), ctx.getChange().currentPatchSetId(),
|
ctx.getDb(), ctx.getChange().currentPatchSetId(),
|
||||||
ctx.getUser(), ctx.getWhen(), body);
|
ctx.getUser(), ctx.getWhen(), body, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ChangeMessage newMessage(
|
public static ChangeMessage newMessage(
|
||||||
ReviewDb db, PatchSet.Id psId, CurrentUser user, Timestamp when,
|
ReviewDb db, PatchSet.Id psId, CurrentUser user, Timestamp when,
|
||||||
String body) throws OrmException {
|
String body, @Nullable String tag) throws OrmException {
|
||||||
checkNotNull(psId);
|
checkNotNull(psId);
|
||||||
Account.Id accountId = user.isInternalUser() ? null : user.getAccountId();
|
Account.Id accountId = user.isInternalUser() ? null : user.getAccountId();
|
||||||
ChangeMessage m = new ChangeMessage(
|
ChangeMessage m = new ChangeMessage(
|
||||||
new ChangeMessage.Key(psId.getParentKey(), ChangeUtil.messageUUID(db)),
|
new ChangeMessage.Key(psId.getParentKey(), ChangeUtil.messageUUID(db)),
|
||||||
accountId, when, psId);
|
accountId, when, psId);
|
||||||
m.setMessage(body);
|
m.setMessage(body);
|
||||||
|
m.setTag(tag);
|
||||||
user.updateRealAccountId(m::setRealAuthor);
|
user.updateRealAccountId(m::setRealAuthor);
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
@@ -202,7 +202,8 @@ public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
|
|||||||
msg.append(msgTxt.trim());
|
msg.append(msgTxt.trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
return ChangeMessagesUtil.newMessage(ctx, msg.toString());
|
return ChangeMessagesUtil.newMessage(
|
||||||
|
ctx, msg.toString(), ChangeMessagesUtil.TAG_ABANDON);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -365,7 +365,7 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp {
|
|||||||
if (message != null) {
|
if (message != null) {
|
||||||
changeMessage = ChangeMessagesUtil.newMessage(
|
changeMessage = ChangeMessagesUtil.newMessage(
|
||||||
db, patchSet.getId(), ctx.getUser(), patchSet.getCreatedOn(),
|
db, patchSet.getId(), ctx.getUser(), patchSet.getCreatedOn(),
|
||||||
message);
|
message, ChangeMessagesUtil.TAG_UPLOADED_PATCH_SET);
|
||||||
cmUtil.addChangeMessage(db, update, changeMessage);
|
cmUtil.addChangeMessage(db, update, changeMessage);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -290,7 +290,8 @@ public class CherryPickChange {
|
|||||||
.append(" as commit ")
|
.append(" as commit ")
|
||||||
.append(cherryPickCommit.name());
|
.append(cherryPickCommit.name());
|
||||||
ChangeMessage changeMessage = ChangeMessagesUtil.newMessage(
|
ChangeMessage changeMessage = ChangeMessagesUtil.newMessage(
|
||||||
ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), sb.toString());
|
ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), sb.toString(),
|
||||||
|
ChangeMessagesUtil.TAG_CHERRY_PICK_CHANGE);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), changeMessage);
|
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), changeMessage);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -115,7 +115,8 @@ public class DeleteAssignee implements RestModifyView<ChangeResource, Input> {
|
|||||||
private void addMessage(BatchUpdate.ChangeContext ctx,
|
private void addMessage(BatchUpdate.ChangeContext ctx,
|
||||||
ChangeUpdate update, Account deleted) throws OrmException {
|
ChangeUpdate update, Account deleted) throws OrmException {
|
||||||
ChangeMessage cmsg = ChangeMessagesUtil.newMessage(
|
ChangeMessage cmsg = ChangeMessagesUtil.newMessage(
|
||||||
ctx, "Assignee deleted: " + deleted.getName(anonymousCowardName));
|
ctx, "Assignee deleted: " + deleted.getName(anonymousCowardName),
|
||||||
|
ChangeMessagesUtil.TAG_DELETE_ASSIGNEE);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -184,7 +184,8 @@ public class DeleteReviewer
|
|||||||
ChangeUpdate update = ctx.getUpdate(currPs.getId());
|
ChangeUpdate update = ctx.getUpdate(currPs.getId());
|
||||||
update.removeReviewer(reviewerId);
|
update.removeReviewer(reviewerId);
|
||||||
|
|
||||||
changeMessage = ChangeMessagesUtil.newMessage(ctx, msg.toString());
|
changeMessage = ChangeMessagesUtil.newMessage(ctx, msg.toString(),
|
||||||
|
ChangeMessagesUtil.TAG_DELETE_REVIEWER);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), update, changeMessage);
|
cmUtil.addChangeMessage(ctx.getDb(), update, changeMessage);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -175,7 +175,8 @@ public class DeleteVote
|
|||||||
msg.append(" by ")
|
msg.append(" by ")
|
||||||
.append(userFactory.create(accountId).getNameEmail())
|
.append(userFactory.create(accountId).getNameEmail())
|
||||||
.append("\n");
|
.append("\n");
|
||||||
changeMessage = ChangeMessagesUtil.newMessage(ctx, msg.toString());
|
changeMessage = ChangeMessagesUtil.newMessage(ctx, msg.toString(),
|
||||||
|
ChangeMessagesUtil.TAG_DELETE_VOTE);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId),
|
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId),
|
||||||
changeMessage);
|
changeMessage);
|
||||||
|
|
||||||
|
@@ -176,7 +176,8 @@ public class Move implements RestModifyView<ChangeResource, MoveInput> {
|
|||||||
msgBuf.append(input.message);
|
msgBuf.append(input.message);
|
||||||
}
|
}
|
||||||
ChangeMessage cmsg =
|
ChangeMessage cmsg =
|
||||||
ChangeMessagesUtil.newMessage(ctx, msgBuf.toString());
|
ChangeMessagesUtil.newMessage(
|
||||||
|
ctx, msgBuf.toString(), ChangeMessagesUtil.TAG_MOVE);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -225,7 +225,8 @@ public class PatchSetInserter extends BatchUpdate.Op {
|
|||||||
|
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
changeMessage = ChangeMessagesUtil.newMessage(
|
changeMessage = ChangeMessagesUtil.newMessage(
|
||||||
db, patchSet.getId(), ctx.getUser(), ctx.getWhen(), message);
|
db, patchSet.getId(), ctx.getUser(), ctx.getWhen(), message,
|
||||||
|
ChangeMessagesUtil.TAG_UPLOADED_PATCH_SET);
|
||||||
changeMessage.setMessage(message);
|
changeMessage.setMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -953,8 +953,7 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
|
|||||||
|
|
||||||
message = ChangeMessagesUtil.newMessage(
|
message = ChangeMessagesUtil.newMessage(
|
||||||
ctx.getDb(), psId, user, ctx.getWhen(),
|
ctx.getDb(), psId, user, ctx.getWhen(),
|
||||||
"Patch Set " + psId.get() + ":" + buf);
|
"Patch Set " + psId.get() + ":" + buf, in.tag);
|
||||||
message.setTag(in.tag);
|
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), message);
|
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), message);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -254,7 +254,8 @@ public class PublishDraftPatchSet implements RestModifyView<RevisionResource, In
|
|||||||
throws EmailException, OrmException {
|
throws EmailException, OrmException {
|
||||||
ChangeMessage msg = ChangeMessagesUtil.newMessage(
|
ChangeMessage msg = ChangeMessagesUtil.newMessage(
|
||||||
ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(),
|
ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(),
|
||||||
"Uploaded patch set " + psId.get() + ".");
|
"Uploaded patch set " + psId.get() + ".",
|
||||||
|
ChangeMessagesUtil.TAG_UPLOADED_PATCH_SET);
|
||||||
ReplacePatchSetSender cm =
|
ReplacePatchSetSender cm =
|
||||||
replacePatchSetFactory.create(ctx.getProject(), change.getId());
|
replacePatchSetFactory.create(ctx.getProject(), change.getId());
|
||||||
cm.setFrom(ctx.getAccountId());
|
cm.setFrom(ctx.getAccountId());
|
||||||
|
@@ -114,7 +114,8 @@ public class PutTopic implements RestModifyView<ChangeResource, Input>,
|
|||||||
change.setTopic(Strings.emptyToNull(newTopicName));
|
change.setTopic(Strings.emptyToNull(newTopicName));
|
||||||
update.setTopic(change.getTopic());
|
update.setTopic(change.getTopic());
|
||||||
|
|
||||||
ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, summary);
|
ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, summary,
|
||||||
|
ChangeMessagesUtil.TAG_SET_TOPIC);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -130,7 +130,8 @@ public class Restore implements RestModifyView<ChangeResource, RestoreInput>,
|
|||||||
msg.append("\n\n");
|
msg.append("\n\n");
|
||||||
msg.append(input.message.trim());
|
msg.append(input.message.trim());
|
||||||
}
|
}
|
||||||
return ChangeMessagesUtil.newMessage(ctx, msg.toString());
|
return ChangeMessagesUtil.newMessage(ctx, msg.toString(),
|
||||||
|
ChangeMessagesUtil.TAG_RESTORE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -274,7 +274,8 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
|||||||
Change change = ctx.getChange();
|
Change change = ctx.getChange();
|
||||||
PatchSet.Id patchSetId = change.currentPatchSetId();
|
PatchSet.Id patchSetId = change.currentPatchSetId();
|
||||||
ChangeMessage changeMessage = ChangeMessagesUtil.newMessage(ctx,
|
ChangeMessage changeMessage = ChangeMessagesUtil.newMessage(ctx,
|
||||||
"Created a revert of this change as I" + computedChangeId.name());
|
"Created a revert of this change as I" + computedChangeId.name(),
|
||||||
|
ChangeMessagesUtil.TAG_REVERT);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(patchSetId),
|
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(patchSetId),
|
||||||
changeMessage);
|
changeMessage);
|
||||||
return true;
|
return true;
|
||||||
|
@@ -131,7 +131,8 @@ public class SetAssigneeOp extends BatchUpdate.Op {
|
|||||||
msg.append(" to: ");
|
msg.append(" to: ");
|
||||||
msg.append(newAssignee.getName(anonymousCowardName));
|
msg.append(newAssignee.getName(anonymousCowardName));
|
||||||
}
|
}
|
||||||
ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, msg.toString());
|
ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, msg.toString(),
|
||||||
|
ChangeMessagesUtil.TAG_SET_ASSIGNEE);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -136,7 +136,8 @@ public class SetHashtagsOp extends BatchUpdate.Op {
|
|||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
appendHashtagMessage(msg, "added", toAdd);
|
appendHashtagMessage(msg, "added", toAdd);
|
||||||
appendHashtagMessage(msg, "removed", toRemove);
|
appendHashtagMessage(msg, "removed", toRemove);
|
||||||
ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, msg.toString());
|
ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, msg.toString(),
|
||||||
|
ChangeMessagesUtil.TAG_SET_HASHTAGS);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -755,6 +755,7 @@ public class MergeOp implements AutoCloseable {
|
|||||||
ChangeMessage msg = ChangeMessagesUtil.newMessage(
|
ChangeMessage msg = ChangeMessagesUtil.newMessage(
|
||||||
ctx.getDb(), change.currentPatchSetId(),
|
ctx.getDb(), change.currentPatchSetId(),
|
||||||
internalUserFactory.create(), change.getLastUpdatedOn(),
|
internalUserFactory.create(), change.getLastUpdatedOn(),
|
||||||
|
ChangeMessagesUtil.TAG_MERGED,
|
||||||
"Project was deleted.");
|
"Project was deleted.");
|
||||||
cmUtil.addChangeMessage(ctx.getDb(),
|
cmUtil.addChangeMessage(ctx.getDb(),
|
||||||
ctx.getUpdate(change.currentPatchSetId()), msg);
|
ctx.getUpdate(change.currentPatchSetId()), msg);
|
||||||
|
@@ -150,7 +150,8 @@ public class MergedByPushOp extends BatchUpdate.Op {
|
|||||||
}
|
}
|
||||||
msgBuf.append(".");
|
msgBuf.append(".");
|
||||||
ChangeMessage msg = ChangeMessagesUtil.newMessage(
|
ChangeMessage msg = ChangeMessagesUtil.newMessage(
|
||||||
ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), msgBuf.toString());
|
ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), msgBuf.toString(),
|
||||||
|
ChangeMessagesUtil.TAG_MERGED);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), update, msg);
|
cmUtil.addChangeMessage(ctx.getDb(), update, msg);
|
||||||
|
|
||||||
PatchSetApproval submitter = ApprovalsUtil.newApproval(
|
PatchSetApproval submitter = ApprovalsUtil.newApproval(
|
||||||
|
@@ -285,7 +285,7 @@ public class ReplaceOp extends BatchUpdate.Op {
|
|||||||
message.append("\n").append(reviewMessage);
|
message.append("\n").append(reviewMessage);
|
||||||
}
|
}
|
||||||
msg = ChangeMessagesUtil.newMessage(ctx.getDb(), patchSetId, ctx.getUser(),
|
msg = ChangeMessagesUtil.newMessage(ctx.getDb(), patchSetId, ctx.getUser(),
|
||||||
ctx.getWhen(), message.toString());
|
ctx.getWhen(), message.toString(), ChangeMessagesUtil.TAG_UPLOADED_PATCH_SET);
|
||||||
cmUtil.addChangeMessage(ctx.getDb(), update, msg);
|
cmUtil.addChangeMessage(ctx.getDb(), update, msg);
|
||||||
|
|
||||||
if (mergedByPushOp == null) {
|
if (mergedByPushOp == null) {
|
||||||
|
@@ -450,7 +450,8 @@ abstract class SubmitStrategyOp extends BatchUpdate.Op {
|
|||||||
private ChangeMessage message(ChangeContext ctx, PatchSet.Id psId,
|
private ChangeMessage message(ChangeContext ctx, PatchSet.Id psId,
|
||||||
String body) throws OrmException {
|
String body) throws OrmException {
|
||||||
return ChangeMessagesUtil.newMessage(
|
return ChangeMessagesUtil.newMessage(
|
||||||
ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), body);
|
ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), body,
|
||||||
|
ChangeMessagesUtil.TAG_MERGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setMerged(ChangeContext ctx, ChangeMessage msg)
|
private void setMerged(ChangeContext ctx, ChangeMessage msg)
|
||||||
|
@@ -104,12 +104,11 @@ class ChangeNotesParser {
|
|||||||
abstract PatchSet.Id psId();
|
abstract PatchSet.Id psId();
|
||||||
abstract Account.Id accountId();
|
abstract Account.Id accountId();
|
||||||
abstract String label();
|
abstract String label();
|
||||||
@Nullable abstract String tag();
|
|
||||||
|
|
||||||
private static ApprovalKey create(PatchSet.Id psId, Account.Id accountId,
|
private static ApprovalKey create(PatchSet.Id psId, Account.Id accountId,
|
||||||
String label, @Nullable String tag) {
|
String label) {
|
||||||
return new AutoValue_ChangeNotesParser_ApprovalKey(
|
return new AutoValue_ChangeNotesParser_ApprovalKey(
|
||||||
psId, accountId, label, tag);
|
psId, accountId, label);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -740,7 +739,7 @@ class ChangeNotesParser {
|
|||||||
psa.setRealAccountId(realAccountId);
|
psa.setRealAccountId(realAccountId);
|
||||||
}
|
}
|
||||||
ApprovalKey k =
|
ApprovalKey k =
|
||||||
ApprovalKey.create(psId, effectiveAccountId, l.label(), tag);
|
ApprovalKey.create(psId, effectiveAccountId, l.label());
|
||||||
if (!approvals.containsKey(k)) {
|
if (!approvals.containsKey(k)) {
|
||||||
approvals.put(k, psa);
|
approvals.put(k, psa);
|
||||||
}
|
}
|
||||||
@@ -789,7 +788,7 @@ class ChangeNotesParser {
|
|||||||
if (!Objects.equals(realAccountId, committerId)) {
|
if (!Objects.equals(realAccountId, committerId)) {
|
||||||
remove.setRealAccountId(realAccountId);
|
remove.setRealAccountId(realAccountId);
|
||||||
}
|
}
|
||||||
ApprovalKey k = ApprovalKey.create(psId, effectiveAccountId, label, tag);
|
ApprovalKey k = ApprovalKey.create(psId, effectiveAccountId, label);
|
||||||
if (!approvals.containsKey(k)) {
|
if (!approvals.containsKey(k)) {
|
||||||
approvals.put(k, remove);
|
approvals.put(k, remove);
|
||||||
}
|
}
|
||||||
|
@@ -139,10 +139,8 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
|
|
||||||
ImmutableListMultimap<PatchSet.Id, PatchSetApproval> approvals =
|
ImmutableListMultimap<PatchSet.Id, PatchSetApproval> approvals =
|
||||||
notes.getApprovals();
|
notes.getApprovals();
|
||||||
assertThat(approvals).hasSize(2);
|
assertThat(approvals).hasSize(1);
|
||||||
assertThat(approvals.entries().asList().get(0).getValue().getTag())
|
assertThat(approvals.entries().asList().get(0).getValue().getTag())
|
||||||
.isEqualTo(tag1);
|
|
||||||
assertThat(approvals.entries().asList().get(1).getValue().getTag())
|
|
||||||
.isEqualTo(tag2);
|
.isEqualTo(tag2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user