mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
webhooks/taiga: Support relateduserstory events.
This commit adds support for the following: 1. When a user story is added to an epic. 2. When a user story is removed from an epic.
This commit is contained in:
132
zerver/webhooks/taiga/fixtures/relateduserstory_created.json
Normal file
132
zerver/webhooks/taiga/fixtures/relateduserstory_created.json
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
{
|
||||||
|
"date":"2017-10-25T00:48:47.094Z",
|
||||||
|
"by":{
|
||||||
|
"photo":null,
|
||||||
|
"permalink":"https://tree.taiga.io/profile/eeshangarg",
|
||||||
|
"full_name":"Eeshan Garg",
|
||||||
|
"username":"eeshangarg",
|
||||||
|
"id":258659,
|
||||||
|
"gravatar_id":"cd181af88d928dab53c55600c9f7551d"
|
||||||
|
},
|
||||||
|
"action":"create",
|
||||||
|
"type":"relateduserstory",
|
||||||
|
"data":{
|
||||||
|
"epic":{
|
||||||
|
"assigned_to":null,
|
||||||
|
"description":"An epic about supporting epics!",
|
||||||
|
"custom_attributes_values":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"status":{
|
||||||
|
"slug":"new",
|
||||||
|
"id":1004969,
|
||||||
|
"color":"#999999",
|
||||||
|
"name":"New",
|
||||||
|
"is_closed":false
|
||||||
|
},
|
||||||
|
"project":{
|
||||||
|
"permalink":"https://tree.taiga.io/project/eeshangarg-zulip",
|
||||||
|
"logo_big_url":null,
|
||||||
|
"id":229096,
|
||||||
|
"name":"Zulip"
|
||||||
|
},
|
||||||
|
"epics_order":1508892504131,
|
||||||
|
"created_date":"2017-10-25T00:48:24.157Z",
|
||||||
|
"team_requirement":false,
|
||||||
|
"tags":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"id":50717,
|
||||||
|
"subject":"This is Epic!",
|
||||||
|
"owner":{
|
||||||
|
"photo":null,
|
||||||
|
"permalink":"https://tree.taiga.io/profile/eeshangarg",
|
||||||
|
"full_name":"Eeshan Garg",
|
||||||
|
"username":"eeshangarg",
|
||||||
|
"id":258659,
|
||||||
|
"gravatar_id":"cd181af88d928dab53c55600c9f7551d"
|
||||||
|
},
|
||||||
|
"ref":9,
|
||||||
|
"client_requirement":false,
|
||||||
|
"modified_date":"2017-10-25T00:48:24.175Z",
|
||||||
|
"color":"#888a85",
|
||||||
|
"watchers":[
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"order":1508892527009,
|
||||||
|
"id":187087,
|
||||||
|
"user_story":{
|
||||||
|
"assigned_to":null,
|
||||||
|
"custom_attributes_values":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"is_blocked":false,
|
||||||
|
"status":{
|
||||||
|
"is_archived":false,
|
||||||
|
"color":"#999999",
|
||||||
|
"is_closed":false,
|
||||||
|
"slug":"new",
|
||||||
|
"name":"New",
|
||||||
|
"id":1364773
|
||||||
|
},
|
||||||
|
"project":{
|
||||||
|
"permalink":"https://tree.taiga.io/project/eeshangarg-zulip",
|
||||||
|
"logo_big_url":null,
|
||||||
|
"id":229096,
|
||||||
|
"name":"Zulip"
|
||||||
|
},
|
||||||
|
"finish_date":null,
|
||||||
|
"created_date":"2017-10-25T00:42:40.254Z",
|
||||||
|
"team_requirement":false,
|
||||||
|
"watchers":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"owner":{
|
||||||
|
"photo":null,
|
||||||
|
"permalink":"https://tree.taiga.io/profile/eeshangarg",
|
||||||
|
"full_name":"Eeshan Garg",
|
||||||
|
"username":"eeshangarg",
|
||||||
|
"id":258659,
|
||||||
|
"gravatar_id":"cd181af88d928dab53c55600c9f7551d"
|
||||||
|
},
|
||||||
|
"client_requirement":false,
|
||||||
|
"modified_date":"2017-10-25T00:42:40.255Z",
|
||||||
|
"tribe_gig":null,
|
||||||
|
"generated_from_issue":null,
|
||||||
|
"description":"",
|
||||||
|
"points":[
|
||||||
|
{
|
||||||
|
"value":null,
|
||||||
|
"role":"UX",
|
||||||
|
"name":"?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value":null,
|
||||||
|
"role":"Design",
|
||||||
|
"name":"?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value":null,
|
||||||
|
"role":"Front",
|
||||||
|
"name":"?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value":null,
|
||||||
|
"role":"Back",
|
||||||
|
"name":"?"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"is_closed":false,
|
||||||
|
"external_reference":null,
|
||||||
|
"blocked_note":"",
|
||||||
|
"subject":"A related user story",
|
||||||
|
"tags":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"ref":8,
|
||||||
|
"milestone":null,
|
||||||
|
"id":1825616
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
132
zerver/webhooks/taiga/fixtures/relateduserstory_deleted.json
Normal file
132
zerver/webhooks/taiga/fixtures/relateduserstory_deleted.json
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
{
|
||||||
|
"data":{
|
||||||
|
"id":187087,
|
||||||
|
"user_story":{
|
||||||
|
"description":"",
|
||||||
|
"custom_attributes_values":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"id":1825616,
|
||||||
|
"milestone":null,
|
||||||
|
"owner":{
|
||||||
|
"permalink":"https://tree.taiga.io/profile/eeshangarg",
|
||||||
|
"username":"eeshangarg",
|
||||||
|
"full_name":"Eeshan Garg",
|
||||||
|
"photo":null,
|
||||||
|
"id":258659,
|
||||||
|
"gravatar_id":"cd181af88d928dab53c55600c9f7551d"
|
||||||
|
},
|
||||||
|
"modified_date":"2017-10-25T00:53:02.074Z",
|
||||||
|
"external_reference":null,
|
||||||
|
"points":[
|
||||||
|
{
|
||||||
|
"value":null,
|
||||||
|
"role":"UX",
|
||||||
|
"name":"?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value":null,
|
||||||
|
"role":"Design",
|
||||||
|
"name":"?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value":null,
|
||||||
|
"role":"Front",
|
||||||
|
"name":"?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value":null,
|
||||||
|
"role":"Back",
|
||||||
|
"name":"?"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"watchers":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"assigned_to":null,
|
||||||
|
"is_blocked":false,
|
||||||
|
"ref":8,
|
||||||
|
"subject":"A related user story, which is epic",
|
||||||
|
"tribe_gig":null,
|
||||||
|
"finish_date":null,
|
||||||
|
"blocked_note":"",
|
||||||
|
"status":{
|
||||||
|
"is_archived":false,
|
||||||
|
"slug":"new",
|
||||||
|
"name":"New",
|
||||||
|
"id":1364773,
|
||||||
|
"is_closed":false,
|
||||||
|
"color":"#999999"
|
||||||
|
},
|
||||||
|
"project":{
|
||||||
|
"permalink":"https://tree.taiga.io/project/eeshangarg-zulip",
|
||||||
|
"id":229096,
|
||||||
|
"name":"Zulip",
|
||||||
|
"logo_big_url":null
|
||||||
|
},
|
||||||
|
"team_requirement":false,
|
||||||
|
"created_date":"2017-10-25T00:42:40.254Z",
|
||||||
|
"client_requirement":false,
|
||||||
|
"generated_from_issue":null,
|
||||||
|
"is_closed":false,
|
||||||
|
"tags":[
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"order":1508892527009,
|
||||||
|
"epic":{
|
||||||
|
"description":"An epic about supporting epics!",
|
||||||
|
"subject":"This is Epic!",
|
||||||
|
"watchers":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"epics_order":1508892504131,
|
||||||
|
"created_date":"2017-10-25T00:48:24.157Z",
|
||||||
|
"id":50717,
|
||||||
|
"assigned_to":null,
|
||||||
|
"status":{
|
||||||
|
"id":1004969,
|
||||||
|
"is_closed":false,
|
||||||
|
"slug":"new",
|
||||||
|
"name":"New",
|
||||||
|
"color":"#999999"
|
||||||
|
},
|
||||||
|
"color":"#888a85",
|
||||||
|
"project":{
|
||||||
|
"permalink":"https://tree.taiga.io/project/eeshangarg-zulip",
|
||||||
|
"id":229096,
|
||||||
|
"name":"Zulip",
|
||||||
|
"logo_big_url":null
|
||||||
|
},
|
||||||
|
"team_requirement":false,
|
||||||
|
"ref":9,
|
||||||
|
"client_requirement":false,
|
||||||
|
"custom_attributes_values":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"owner":{
|
||||||
|
"permalink":"https://tree.taiga.io/profile/eeshangarg",
|
||||||
|
"username":"eeshangarg",
|
||||||
|
"full_name":"Eeshan Garg",
|
||||||
|
"photo":null,
|
||||||
|
"id":258659,
|
||||||
|
"gravatar_id":"cd181af88d928dab53c55600c9f7551d"
|
||||||
|
},
|
||||||
|
"modified_date":"2017-10-25T00:48:24.175Z",
|
||||||
|
"tags":[
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type":"relateduserstory",
|
||||||
|
"date":"2017-10-25T00:53:52.348Z",
|
||||||
|
"by":{
|
||||||
|
"permalink":"https://tree.taiga.io/profile/eeshangarg",
|
||||||
|
"username":"eeshangarg",
|
||||||
|
"full_name":"Eeshan Garg",
|
||||||
|
"photo":null,
|
||||||
|
"id":258659,
|
||||||
|
"gravatar_id":"cd181af88d928dab53c55600c9f7551d"
|
||||||
|
},
|
||||||
|
"action":"delete"
|
||||||
|
}
|
||||||
@@ -276,3 +276,13 @@ class TaigaHookTests(WebhookTestCase):
|
|||||||
# type: () -> None
|
# type: () -> None
|
||||||
message = u':cross_mark: Eeshan Garg deleted epic **Zulip is great!**'
|
message = u':cross_mark: Eeshan Garg deleted epic **Zulip is great!**'
|
||||||
self.send_and_test_stream_message("epic_deleted", u'subject', message)
|
self.send_and_test_stream_message("epic_deleted", u'subject', message)
|
||||||
|
|
||||||
|
def test_taiga_relateduserstory_created(self):
|
||||||
|
# type: () -> None
|
||||||
|
message = u':package: Eeshan Garg added a related user story **A related user story** to the epic **This is Epic!**'
|
||||||
|
self.send_and_test_stream_message("relateduserstory_created", u'subject', message)
|
||||||
|
|
||||||
|
def test_taiga_relateduserstory_deleted(self):
|
||||||
|
# type: () -> None
|
||||||
|
message = u':cross_mark: Eeshan Garg removed a related user story **A related user story, which is epic** from the epic **This is Epic!**'
|
||||||
|
self.send_and_test_stream_message("relateduserstory_deleted", u'subject', message)
|
||||||
|
|||||||
@@ -64,6 +64,10 @@ templates = {
|
|||||||
'commented': u':thought_balloon: %(user)s commented on epic **%(subject)s**',
|
'commented': u':thought_balloon: %(user)s commented on epic **%(subject)s**',
|
||||||
'delete': u':cross_mark: %(user)s deleted epic **%(subject)s**',
|
'delete': u':cross_mark: %(user)s deleted epic **%(subject)s**',
|
||||||
},
|
},
|
||||||
|
'relateduserstory': {
|
||||||
|
'create': u':package: %(user)s added a related user story **%(userstory_subject)s** to the epic **%(epic_subject)s**',
|
||||||
|
'delete': u':cross_mark: %(user)s removed a related user story **%(userstory_subject)s** from the epic **%(epic_subject)s**',
|
||||||
|
},
|
||||||
'userstory': {
|
'userstory': {
|
||||||
'create': u':package: %(user)s created user story **%(subject)s**.',
|
'create': u':package: %(user)s created user story **%(subject)s**.',
|
||||||
'set_assigned_to': u':busts_in_silhouette: %(user)s assigned user story **%(subject)s** to %(new)s.',
|
'set_assigned_to': u':busts_in_silhouette: %(user)s assigned user story **%(subject)s** to %(new)s.',
|
||||||
@@ -168,6 +172,17 @@ def parse_comment(message):
|
|||||||
def parse_create_or_delete(message):
|
def parse_create_or_delete(message):
|
||||||
# type: (Mapping[str, Any]) -> Dict[str, Any]
|
# type: (Mapping[str, Any]) -> Dict[str, Any]
|
||||||
""" Parses create or delete event. """
|
""" Parses create or delete event. """
|
||||||
|
if message["type"] == 'relateduserstory':
|
||||||
|
return {
|
||||||
|
'type': message["type"],
|
||||||
|
'event': message["action"],
|
||||||
|
'values': {
|
||||||
|
'user': get_owner_name(message),
|
||||||
|
'epic_subject': message['data']['epic']['subject'],
|
||||||
|
'userstory_subject': message['data']['user_story']['subject'],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'type': message["type"],
|
'type': message["type"],
|
||||||
'event': message["action"],
|
'event': message["action"],
|
||||||
|
|||||||
Reference in New Issue
Block a user