Extract approvals into properties for CommentAddedEvent Change-Id: I1a8a6678ca492efaa802441570a0f4cae9a591d0
diff --git a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyAttributeExtractor.java b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyAttributeExtractor.java index 539b646..133c995 100644 --- a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyAttributeExtractor.java +++ b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyAttributeExtractor.java
@@ -18,6 +18,7 @@ import com.google.common.collect.Sets; import com.google.gerrit.server.data.AccountAttribute; +import com.google.gerrit.server.data.ApprovalAttribute; import com.google.gerrit.server.data.ChangeAttribute; import com.google.gerrit.server.data.PatchSetAttribute; import com.google.gerrit.server.data.RefUpdateAttribute; @@ -98,4 +99,11 @@ refUpdateAttribute.refName)); return properties; } + + public Set<Property>extractFrom(ApprovalAttribute approvalAttribute) { + Set<Property> properties = Sets.newHashSet(); + properties.add(propertyFactory.create("approval-" + + approvalAttribute.type, approvalAttribute.value)); + return properties; + } }
diff --git a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractor.java b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractor.java index e6f9968..fe69773 100644 --- a/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractor.java +++ b/hooks-its/src/main/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractor.java
@@ -20,6 +20,7 @@ import com.google.common.collect.Sets; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; +import com.google.gerrit.server.data.ApprovalAttribute; import com.google.gerrit.server.events.ChangeAbandonedEvent; import com.google.gerrit.server.events.ChangeEvent; import com.google.gerrit.server.events.ChangeMergedEvent; @@ -130,8 +131,13 @@ common.addAll(propertyAttributeExtractor.extractFrom(event.change)); common.addAll(propertyAttributeExtractor.extractFrom(event.patchSet)); common.addAll(propertyAttributeExtractor.extractFrom(event.author, "commenter")); + if (event.approvals != null) { + for (ApprovalAttribute approvalAttribute : event.approvals) { + common.addAll(propertyAttributeExtractor.extractFrom( + approvalAttribute)); + } + } common.add(propertyFactory.create("comment", event.comment)); - //TODO approvals PatchSet.Id patchSetId = newPatchSetId(event.change.number, event.patchSet.number); return issueExtractor.getIssueIds(event.change.project,
diff --git a/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyAttributeExtractorTest.java b/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyAttributeExtractorTest.java index 0aa5da5..a106d67 100644 --- a/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyAttributeExtractorTest.java +++ b/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyAttributeExtractorTest.java
@@ -21,6 +21,7 @@ import com.google.common.collect.Sets; import com.google.gerrit.server.config.FactoryModule; import com.google.gerrit.server.data.AccountAttribute; +import com.google.gerrit.server.data.ApprovalAttribute; import com.google.gerrit.server.data.ChangeAttribute; import com.google.gerrit.server.data.PatchSetAttribute; import com.google.gerrit.server.data.RefUpdateAttribute; @@ -296,6 +297,27 @@ assertEquals("Properties do not match", expected, actual); } + public void testApprovalAttribute() { + ApprovalAttribute approvalAttribute = new ApprovalAttribute(); + approvalAttribute.type = "TestType"; + approvalAttribute.value = "TestValue"; + + Property propertyApproval = createMock(Property.class); + expect(propertyFactory.create("approval-TestType", "TestValue")) + .andReturn(propertyApproval); + + replayMocks(); + + PropertyAttributeExtractor extractor = + injector.getInstance(PropertyAttributeExtractor.class); + + Set<Property> actual = extractor.extractFrom(approvalAttribute); + + Set<Property> expected = Sets.newHashSet(); + expected.add(propertyApproval); + assertEquals("Properties do not match", expected, actual); + } + public void setUp() throws Exception { super.setUp(); injector = Guice.createInjector(new TestModule());
diff --git a/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractorTest.java b/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractorTest.java index 5c331a7..421038d 100644 --- a/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractorTest.java +++ b/hooks-its/src/test/java/com/googlesource/gerrit/plugins/hooks/util/PropertyExtractorTest.java
@@ -24,6 +24,7 @@ import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.server.config.FactoryModule; import com.google.gerrit.server.data.AccountAttribute; +import com.google.gerrit.server.data.ApprovalAttribute; import com.google.gerrit.server.data.ChangeAttribute; import com.google.gerrit.server.data.PatchSetAttribute; import com.google.gerrit.server.data.RefUpdateAttribute; @@ -181,7 +182,7 @@ eventHelper(event, "ChangeRestoredEvent", "change-restored", common, true); } - public void testCommentAddedEvent() { + public void testCommentAddedEventWOApprovals() { CommentAddedEvent event = new CommentAddedEvent(); ChangeAttribute changeAttribute = createMock(ChangeAttribute.class); @@ -221,6 +222,60 @@ eventHelper(event, "CommentAddedEvent", "comment-added", common, true); } + public void testCommentAddedEventWApprovals() { + CommentAddedEvent event = new CommentAddedEvent(); + + ChangeAttribute changeAttribute = createMock(ChangeAttribute.class); + event.change = changeAttribute; + Property propertyChange = createMock(Property.class); + expect(propertyAttributeExtractor.extractFrom(changeAttribute)) + .andReturn(Sets.newHashSet(propertyChange)); + + AccountAttribute accountAttribute = createMock(AccountAttribute.class); + event.author = accountAttribute; + Property propertySubmitter = createMock(Property.class); + expect(propertyAttributeExtractor.extractFrom(accountAttribute, + "commenter")).andReturn(Sets.newHashSet(propertySubmitter)); + + PatchSetAttribute patchSetAttribute = createMock(PatchSetAttribute.class); + event.patchSet = patchSetAttribute; + Property propertyPatchSet = createMock(Property.class); + expect(propertyAttributeExtractor.extractFrom(patchSetAttribute)) + .andReturn(Sets.newHashSet(propertyPatchSet)); + + ApprovalAttribute approvalAttribute1 = createMock(ApprovalAttribute.class); + Property propertyApproval1 = createMock(Property.class); + expect(propertyAttributeExtractor.extractFrom(approvalAttribute1)) + .andReturn(Sets.newHashSet(propertyApproval1)); + ApprovalAttribute approvalAttribute2 = createMock(ApprovalAttribute.class); + Property propertyApproval2 = createMock(Property.class); + expect(propertyAttributeExtractor.extractFrom(approvalAttribute2)) + .andReturn(Sets.newHashSet(propertyApproval2)); + ApprovalAttribute approvalAttributes[] = { approvalAttribute1, + approvalAttribute2 }; + event.approvals = approvalAttributes; + + event.comment = "testComment"; + Property propertyComment = createMock(Property.class); + expect(propertyFactory.create("comment", "testComment")) + .andReturn(propertyComment); + + changeAttribute.project = "testProject"; + changeAttribute.number = "176"; + patchSetAttribute.revision = "testRevision"; + patchSetAttribute.number = "3"; + + Set<Property> common = Sets.newHashSet(); + common.add(propertyChange); + common.add(propertySubmitter); + common.add(propertyPatchSet); + common.add(propertyComment); + common.add(propertyApproval1); + common.add(propertyApproval2); + + eventHelper(event, "CommentAddedEvent", "comment-added", common, true); + } + public void testPatchSetCreatedEvent() { PatchSetCreatedEvent event = new PatchSetCreatedEvent();