summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Pursehouse <david.pursehouse@sonymobile.com>2013-09-11 15:56:22 +0900
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2013-09-11 16:54:59 +0900
commitc1467413c90b4fd9c0b67c668906e086af3f6552 (patch)
tree9b60a4d5533780b2a6dd105659a86874187e0223
parentea6218a909f89f01819e3070139380ac5583257c (diff)
downloadpygerrit-c1467413c90b4fd9c0b67c668906e086af3f6552.tar.gz
Fix #8: Support the "topic-changed" stream event
Change-Id: I70b9cbea1da20a1434eea39e3d8e85e94357b792
-rw-r--r--pygerrit/events.py23
-rw-r--r--testdata/topic-changed-event.txt13
-rwxr-xr-xunittests.py21
3 files changed, 56 insertions, 1 deletions
diff --git a/pygerrit/events.py b/pygerrit/events.py
index f525320..3774b0c 100644
--- a/pygerrit/events.py
+++ b/pygerrit/events.py
@@ -301,3 +301,26 @@ class ReviewerAddedEvent(GerritEvent):
return u"<ReviewerAddedEvent>: %s %s %s" % (self.change,
self.patchset,
self.reviewer)
+
+
+@GerritEventFactory.register("topic-changed")
+class TopicChangedEvent(GerritEvent):
+
+ """ Gerrit "topic-changed" event. """
+
+ def __init__(self, json_data):
+ super(TopicChangedEvent, self).__init__(json_data)
+ try:
+ self.change = Change(json_data["change"])
+ self.changer = Account(json_data["changer"])
+ if "oldTopic" in json_data:
+ self.oldtopic = json_data["oldTopic"]
+ else:
+ self.oldtopic = ""
+ except KeyError as e:
+ raise GerritError("TopicChangedEvent: %s" % e)
+
+ def __repr__(self):
+ return u"<TopicChangedEvent>: %s %s [%s]" % (self.change,
+ self.changer,
+ self.oldtopic)
diff --git a/testdata/topic-changed-event.txt b/testdata/topic-changed-event.txt
new file mode 100644
index 0000000..1847440
--- /dev/null
+++ b/testdata/topic-changed-event.txt
@@ -0,0 +1,13 @@
+{"type":"topic-changed",
+ "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"},
+ "changer":{"name":"Changer Name",
+ "email":"changer@example.com"},
+ "oldTopic":"old-topic"}
diff --git a/unittests.py b/unittests.py
index a9719ab..fac78e1 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, ReviewerAddedEvent
+ ErrorEvent, MergeFailedEvent, ReviewerAddedEvent, TopicChangedEvent
from pygerrit.client import GerritClient
from setup import REQUIRES as setup_requires
@@ -291,6 +291,25 @@ class TestGerritEvents(unittest.TestCase):
self.assertEquals(event.restorer.email, "restorer@example.com")
self.assertEquals(event.reason, "Restore reason")
+ def test_topic_changed(self):
+ _create_event("topic-changed-event", self.gerrit)
+ event = self.gerrit.get_event(False)
+ self.assertTrue(isinstance(event, TopicChangedEvent))
+ self.assertEquals(event.name, "topic-changed")
+ 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.changer.name, "Changer Name")
+ self.assertEquals(event.changer.email, "changer@example.com")
+ self.assertEquals(event.oldtopic, "old-topic")
+
def test_user_defined_event(self):
_create_event("user-defined-event", self.gerrit)
event = self.gerrit.get_event(False)