Always add project to issue properties

Now that the plugin only listen to RefEvents, the event project can be
always added to the issue properties. The advantage of doing so is that
this allows to add project specific behaviour, which will be done in
follow-up changes.

Change-Id: I59b7452f8bcb0d299d3c71dbd35fe9905c8f92d2
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractor.java
index 863bffc..ddb8a35 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractor.java
@@ -55,7 +55,6 @@
 
   public Set<Property> extractFrom(ChangeAttribute changeAttribute) {
     Set<Property> properties = Sets.newHashSet();
-    properties.add(propertyFactory.create("project", changeAttribute.project));
     properties.add(propertyFactory.create("branch", changeAttribute.branch));
     properties.add(propertyFactory.create("topic", changeAttribute.topic));
     properties.add(propertyFactory.create("subject", changeAttribute.subject));
@@ -125,7 +124,6 @@
 
     // New style configs for vm and soy
     properties.add(propertyFactory.create("revisionOld", refUpdateAttribute.oldRev));
-    properties.add(propertyFactory.create("project", refUpdateAttribute.project));
     properties.add(propertyFactory.create("ref", refUpdateAttribute.refName));
     return properties;
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
index 6cc93da..85055e3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractor.java
@@ -175,6 +175,7 @@
 
     Set<Property> common = Sets.newHashSet();
     common.add(propertyFactory.create("event", event.getClass().getName()));
+    common.add(propertyFactory.create("project", event.getProjectNameKey().get()));
 
     if (event instanceof ChangeAbandonedEvent) {
       associations = extractFrom((ChangeAbandonedEvent) event, common);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractorTest.java
index d97f283..5fb3d85 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyAttributeExtractorTest.java
@@ -98,7 +98,6 @@
     owner.username = "testUsername";
 
     ChangeAttribute changeAttribute = new ChangeAttribute();
-    changeAttribute.project = "testProject";
     changeAttribute.branch = "testBranch";
     changeAttribute.topic = "testTopic";
     changeAttribute.subject = "testSubject";
@@ -108,9 +107,6 @@
     changeAttribute.owner = owner;
     changeAttribute.commitMessage = "Commit Message";
 
-    Property propertyProject = createMock(Property.class);
-    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
-
     Property propertyBranch = createMock(Property.class);
     expect(propertyFactory.create("branch", "testBranch")).andReturn(propertyBranch);
 
@@ -186,7 +182,6 @@
     Set<Property> actual = extractor.extractFrom(changeAttribute);
 
     Set<Property> expected = Sets.newHashSet();
-    expected.add(propertyProject);
     expected.add(propertyBranch);
     expected.add(propertyTopic);
     expected.add(propertySubject);
@@ -217,7 +212,6 @@
     owner.username = "testUsername";
 
     ChangeAttribute changeAttribute = new ChangeAttribute();
-    changeAttribute.project = "testProject";
     changeAttribute.branch = "testBranch";
     changeAttribute.topic = "testTopic";
     changeAttribute.subject = "testSubject";
@@ -228,9 +222,6 @@
     changeAttribute.owner = owner;
     changeAttribute.commitMessage = "Commit Message";
 
-    Property propertyProject = createMock(Property.class);
-    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
-
     Property propertyBranch = createMock(Property.class);
     expect(propertyFactory.create("branch", "testBranch")).andReturn(propertyBranch);
 
@@ -306,7 +297,6 @@
     Set<Property> actual = extractor.extractFrom(changeAttribute);
 
     Set<Property> expected = Sets.newHashSet();
-    expected.add(propertyProject);
     expected.add(propertyBranch);
     expected.add(propertyTopic);
     expected.add(propertySubject);
@@ -456,7 +446,6 @@
     RefUpdateAttribute refUpdateAttribute = new RefUpdateAttribute();
     refUpdateAttribute.newRev = "1234567891123456789212345678931234567894";
     refUpdateAttribute.oldRev = "9876543211987654321298765432139876543214";
-    refUpdateAttribute.project = "testProject";
     refUpdateAttribute.refName = "testRef";
 
     Property propertyRevision = createMock(Property.class);
@@ -471,9 +460,6 @@
     expect(propertyFactory.create("revision-old", "9876543211987654321298765432139876543214"))
         .andReturn(propertyRevisionOld2);
 
-    Property propertyProject = createMock(Property.class);
-    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
-
     Property propertyRef = createMock(Property.class);
     expect(propertyFactory.create("ref", "testRef")).andReturn(propertyRef);
 
@@ -487,7 +473,6 @@
     expected.add(propertyRevision);
     expected.add(propertyRevisionOld);
     expected.add(propertyRevisionOld2);
-    expected.add(propertyProject);
     expected.add(propertyRef);
     assertEquals("Properties do not match", expected, actual);
   }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
index 7255f43..b13bb4b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/util/PropertyExtractorTest.java
@@ -22,6 +22,7 @@
 import com.google.gerrit.extensions.config.FactoryModule;
 import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.reviewdb.client.PatchSet;
+import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.Project.NameKey;
 import com.google.gerrit.server.data.AccountAttribute;
 import com.google.gerrit.server.data.ApprovalAttribute;
@@ -59,6 +60,8 @@
                 "com.googlesource.gerrit.plugins."
                     + "its.base.util.PropertyExtractorTest$DummyEvent"))
         .andReturn(property1);
+    Property propertyProject = createMock(Property.class);
+    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
 
     replayMocks();
 
@@ -93,12 +96,17 @@
     Property propertyReason = createMock(Property.class);
     expect(propertyFactory.create("reason", "testReason")).andReturn(propertyReason);
 
+    event.project = new Project.NameKey("testProject");
+    Property propertyProject = createMock(Property.class);
+    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
+
     changeAttribute.project = "testProject";
     changeAttribute.number = 176;
     patchSetAttribute.revision = "testRevision";
     patchSetAttribute.number = 3;
 
     Set<Property> common = Sets.newHashSet();
+    common.add(propertyProject);
     common.add(propertyChange);
     common.add(propertySubmitter);
     common.add(propertyPatchSet);
@@ -128,12 +136,17 @@
     expect(propertyAttributeExtractor.extractFrom(patchSetAttribute))
         .andReturn(Sets.newHashSet(propertyPatchSet));
 
+    event.project = new Project.NameKey("testProject");
+    Property propertyProject = createMock(Property.class);
+    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
+
     changeAttribute.project = "testProject";
     changeAttribute.number = 176;
     patchSetAttribute.revision = "testRevision";
     patchSetAttribute.number = 3;
 
     Set<Property> common = Sets.newHashSet();
+    common.add(propertyProject);
     common.add(propertyChange);
     common.add(propertySubmitter);
     common.add(propertyPatchSet);
@@ -166,12 +179,17 @@
     Property propertyReason = createMock(Property.class);
     expect(propertyFactory.create("reason", "testReason")).andReturn(propertyReason);
 
+    event.project = new Project.NameKey("testProject");
+    Property propertyProject = createMock(Property.class);
+    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
+
     changeAttribute.project = "testProject";
     changeAttribute.number = 176;
     patchSetAttribute.revision = "testRevision";
     patchSetAttribute.number = 3;
 
     Set<Property> common = Sets.newHashSet();
+    common.add(propertyProject);
     common.add(propertyChange);
     common.add(propertySubmitter);
     common.add(propertyPatchSet);
@@ -205,12 +223,17 @@
     Property propertyComment = createMock(Property.class);
     expect(propertyFactory.create("comment", "testComment")).andReturn(propertyComment);
 
+    event.project = new Project.NameKey("testProject");
+    Property propertyProject = createMock(Property.class);
+    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
+
     changeAttribute.project = "testProject";
     changeAttribute.number = 176;
     patchSetAttribute.revision = "testRevision";
     patchSetAttribute.number = 3;
 
     Set<Property> common = Sets.newHashSet();
+    common.add(propertyProject);
     common.add(propertyChange);
     common.add(propertySubmitter);
     common.add(propertyPatchSet);
@@ -255,12 +278,17 @@
     Property propertyComment = createMock(Property.class);
     expect(propertyFactory.create("comment", "testComment")).andReturn(propertyComment);
 
+    event.project = new Project.NameKey("testProject");
+    Property propertyProject = createMock(Property.class);
+    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
+
     changeAttribute.project = "testProject";
     changeAttribute.number = 176;
     patchSetAttribute.revision = "testRevision";
     patchSetAttribute.number = 3;
 
     Set<Property> common = Sets.newHashSet();
+    common.add(propertyProject);
     common.add(propertyChange);
     common.add(propertySubmitter);
     common.add(propertyPatchSet);
@@ -292,12 +320,17 @@
     expect(propertyAttributeExtractor.extractFrom(patchSetAttribute))
         .andReturn(Sets.newHashSet(propertyPatchSet));
 
+    event.project = new Project.NameKey("testProject");
+    Property propertyProject = createMock(Property.class);
+    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject);
+
     changeAttribute.project = "testProject";
     changeAttribute.number = 176;
     patchSetAttribute.revision = "testRevision";
     patchSetAttribute.number = 3;
 
     Set<Property> common = Sets.newHashSet();
+    common.add(propertyProject);
     common.add(propertyChange);
     common.add(propertySubmitter);
     common.add(propertyPatchSet);
@@ -320,10 +353,14 @@
     expect(propertyAttributeExtractor.extractFrom(refUpdateAttribute))
         .andReturn(Sets.newHashSet(propertyRefUpdated));
 
+    Property propertyProject = createMock(Property.class);
+    expect(propertyFactory.create("project", "testProject")).andReturn(propertyProject).anyTimes();
+
     refUpdateAttribute.project = "testProject";
     refUpdateAttribute.newRev = "testRevision";
 
     Set<Property> common = Sets.newHashSet();
+    common.add(propertyProject);
     common.add(propertySubmitter);
     common.add(propertyRefUpdated);
 
@@ -434,7 +471,7 @@
 
     @Override
     public NameKey getProjectNameKey() {
-      return null;
+      return new Project.NameKey("testProject");
     }
   }
 }