summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Pursehouse <david.pursehouse@sonymobile.com>2013-09-11 15:48:17 +0900
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2013-09-11 16:54:59 +0900
commitea6218a909f89f01819e3070139380ac5583257c (patch)
treeb3fce9f348d61ca9a6b5446a3cac45b9bef9e3c0
parent207296822d08e7d6048bbe77d84ee6e9424a72f4 (diff)
downloadpygerrit-ea6218a909f89f01819e3070139380ac5583257c.tar.gz
Fix #7: Support the "reviewer-added" stream event
Change-Id: I72ece72c08ddc6da31c14db35dd84f35d61d39ed
-rw-r--r--pygerrit/events.py20
-rw-r--r--testdata/reviewer-added-event.txt18
-rwxr-xr-xunittests.py26
3 files changed, 63 insertions, 1 deletions
diff --git a/pygerrit/events.py b/pygerrit/events.py
index c6ff5dd..f525320 100644
--- a/pygerrit/events.py
+++ b/pygerrit/events.py
@@ -281,3 +281,23 @@ class RefUpdatedEvent(GerritEvent):
def __repr__(self):
return u"<RefUpdatedEvent>: %s %s" % (self.ref_update, self.submitter)
+
+
+@GerritEventFactory.register("reviewer-added")
+class ReviewerAddedEvent(GerritEvent):
+
+ """ Gerrit "reviewer-added" event. """
+
+ def __init__(self, json_data):
+ super(ReviewerAddedEvent, self).__init__(json_data)
+ try:
+ self.change = Change(json_data["change"])
+ self.patchset = Patchset.from_json(json_data)
+ self.reviewer = Account(json_data["reviewer"])
+ except KeyError as e:
+ raise GerritError("ReviewerAddedEvent: %s" % e)
+
+ def __repr__(self):
+ return u"<ReviewerAddedEvent>: %s %s %s" % (self.change,
+ self.patchset,
+ self.reviewer)
diff --git a/testdata/reviewer-added-event.txt b/testdata/reviewer-added-event.txt
new file mode 100644
index 0000000..b460afc
--- /dev/null
+++ b/testdata/reviewer-added-event.txt
@@ -0,0 +1,18 @@
+{"type":"reviewer-added",
+ "change":{"project":"project-name",
+ "branch":"branch-name",
+ "topic":"topic-name",
+ "id":"Ideadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
+ "number":"123456",
+ "subject":"Commit message subject",
+ "owner":{"name":"Owner Name",
+ "email":"owner@example.com"},
+ "url":"http://review.example.com/123456"},
+ "patchSet":{"number":"4",
+ "revision":"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
+ "ref":"refs/changes/56/123456/4",
+ "uploader":{"name":"Uploader Name",
+ "email":"uploader@example.com"},
+ "createdOn":1341370514},
+ "reviewer":{"name":"Reviewer Name",
+ "email":"reviewer@example.com"}}
diff --git a/unittests.py b/unittests.py
index 0ff05a7..a9719ab 100755
--- a/unittests.py
+++ b/unittests.py
@@ -33,7 +33,7 @@ from pygerrit.events import PatchsetCreatedEvent, \
RefUpdatedEvent, ChangeMergedEvent, CommentAddedEvent, \
ChangeAbandonedEvent, ChangeRestoredEvent, \
DraftPublishedEvent, GerritEventFactory, GerritEvent, UnhandledEvent, \
- ErrorEvent, MergeFailedEvent
+ ErrorEvent, MergeFailedEvent, ReviewerAddedEvent
from pygerrit.client import GerritClient
from setup import REQUIRES as setup_requires
@@ -229,6 +229,30 @@ class TestGerritEvents(unittest.TestCase):
self.assertEquals(event.author.name, "Author Name")
self.assertEquals(event.author.email, "author@example.com")
+ def test_reviewer_added(self):
+ _create_event("reviewer-added-event", self.gerrit)
+ event = self.gerrit.get_event(False)
+ self.assertTrue(isinstance(event, ReviewerAddedEvent))
+ self.assertEquals(event.name, "reviewer-added")
+ self.assertEquals(event.change.project, "project-name")
+ self.assertEquals(event.change.branch, "branch-name")
+ self.assertEquals(event.change.topic, "topic-name")
+ self.assertEquals(event.change.change_id,
+ "Ideadbeefdeadbeefdeadbeefdeadbeefdeadbeef")
+ self.assertEquals(event.change.number, "123456")
+ self.assertEquals(event.change.subject, "Commit message subject")
+ self.assertEquals(event.change.url, "http://review.example.com/123456")
+ self.assertEquals(event.change.owner.name, "Owner Name")
+ self.assertEquals(event.change.owner.email, "owner@example.com")
+ self.assertEquals(event.patchset.number, "4")
+ self.assertEquals(event.patchset.revision,
+ "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef")
+ self.assertEquals(event.patchset.ref, "refs/changes/56/123456/4")
+ self.assertEquals(event.patchset.uploader.name, "Uploader Name")
+ self.assertEquals(event.patchset.uploader.email, "uploader@example.com")
+ self.assertEquals(event.reviewer.name, "Reviewer Name")
+ self.assertEquals(event.reviewer.email, "reviewer@example.com")
+
def test_change_abandoned(self):
_create_event("change-abandoned-event", self.gerrit)
event = self.gerrit.get_event(False)