diff options
author | David Pursehouse <david.pursehouse@sonymobile.com> | 2013-09-11 15:48:17 +0900 |
---|---|---|
committer | David Pursehouse <david.pursehouse@sonymobile.com> | 2013-09-11 16:54:59 +0900 |
commit | ea6218a909f89f01819e3070139380ac5583257c (patch) | |
tree | b3fce9f348d61ca9a6b5446a3cac45b9bef9e3c0 | |
parent | 207296822d08e7d6048bbe77d84ee6e9424a72f4 (diff) | |
download | pygerrit-ea6218a909f89f01819e3070139380ac5583257c.tar.gz |
Fix #7: Support the "reviewer-added" stream event
Change-Id: I72ece72c08ddc6da31c14db35dd84f35d61d39ed
-rw-r--r-- | pygerrit/events.py | 20 | ||||
-rw-r--r-- | testdata/reviewer-added-event.txt | 18 | ||||
-rwxr-xr-x | unittests.py | 26 |
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) |