Merge pull request #365 from taigaio/issue/1924/allow-multiple-message-action-on-commits

Allow multiple message actions on commit
remotes/origin/enhancement/email-actions
Alejandro 2015-06-24 00:26:43 -07:00
commit d4135c6928
7 changed files with 72 additions and 6 deletions

View File

@ -6,6 +6,7 @@
- Add a "field type" property for custom fields: 'text' and 'multiline text' right now (thanks to [@artlepool](https://github.com/artlepool)) - Add a "field type" property for custom fields: 'text' and 'multiline text' right now (thanks to [@artlepool](https://github.com/artlepool))
### Misc ### Misc
- Allow multiple actions in the commit messages.
- Lots of small and not so small bugfixes. - Lots of small and not so small bugfixes.

View File

@ -61,8 +61,7 @@ class PushEventHook(BaseEventHook):
return return
p = re.compile("tg-(\d+) +#([-\w]+)") p = re.compile("tg-(\d+) +#([-\w]+)")
m = p.search(message.lower()) for m in p.finditer(message.lower()):
if m:
ref = m.group(1) ref = m.group(1)
status_slug = m.group(2) status_slug = m.group(2)
self._change_status(ref, status_slug, bitbucket_user) self._change_status(ref, status_slug, bitbucket_user)

View File

@ -56,8 +56,7 @@ class PushEventHook(BaseEventHook):
return return
p = re.compile("tg-(\d+) +#([-\w]+)") p = re.compile("tg-(\d+) +#([-\w]+)")
m = p.search(message.lower()) for m in p.finditer(message.lower()):
if m:
ref = m.group(1) ref = m.group(1)
status_slug = m.group(2) status_slug = m.group(2)
self._change_status(ref, status_slug, github_user, commit) self._change_status(ref, status_slug, github_user, commit)

View File

@ -54,8 +54,7 @@ class PushEventHook(BaseEventHook):
return return
p = re.compile("tg-(\d+) +#([-\w]+)") p = re.compile("tg-(\d+) +#([-\w]+)")
m = p.search(message.lower()) for m in p.finditer(message.lower()):
if m:
ref = m.group(1) ref = m.group(1)
status_slug = m.group(2) status_slug = m.group(2)
self._change_status(ref, status_slug, gitlab_user) self._change_status(ref, status_slug, gitlab_user)

View File

@ -160,6 +160,26 @@ def test_push_event_user_story_processing(client):
assert len(mail.outbox) == 1 assert len(mail.outbox) == 1
def test_push_event_multiple_actions(client):
creation_status = f.IssueStatusFactory()
role = f.RoleFactory(project=creation_status.project, permissions=["view_issues"])
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
new_status = f.IssueStatusFactory(project=creation_status.project)
issue1 = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
issue2 = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
payload = [
'{"commits": [{"message": "test message test TG-%s #%s ok test TG-%s #%s ok bye!"}]}' % (issue1.ref, new_status.slug, issue2.ref, new_status.slug)
]
mail.outbox = []
ev_hook1 = event_hooks.PushEventHook(issue1.project, payload)
ev_hook1.process_event()
issue1 = Issue.objects.get(id=issue1.id)
issue2 = Issue.objects.get(id=issue2.id)
assert issue1.status.id == new_status.id
assert issue2.status.id == new_status.id
assert len(mail.outbox) == 2
def test_push_event_processing_case_insensitive(client): def test_push_event_processing_case_insensitive(client):
creation_status = f.TaskStatusFactory() creation_status = f.TaskStatusFactory()
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"]) role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])

View File

@ -134,6 +134,30 @@ def test_push_event_user_story_processing(client):
assert len(mail.outbox) == 1 assert len(mail.outbox) == 1
def test_push_event_multiple_actions(client):
creation_status = f.IssueStatusFactory()
role = f.RoleFactory(project=creation_status.project, permissions=["view_issues"])
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
new_status = f.IssueStatusFactory(project=creation_status.project)
issue1 = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
issue2 = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
payload = {"commits": [
{"message": """test message
test TG-%s #%s ok
test TG-%s #%s ok
bye!
""" % (issue1.ref, new_status.slug, issue2.ref, new_status.slug)},
]}
mail.outbox = []
ev_hook1 = event_hooks.PushEventHook(issue1.project, payload)
ev_hook1.process_event()
issue1 = Issue.objects.get(id=issue1.id)
issue2 = Issue.objects.get(id=issue2.id)
assert issue1.status.id == new_status.id
assert issue2.status.id == new_status.id
assert len(mail.outbox) == 2
def test_push_event_processing_case_insensitive(client): def test_push_event_processing_case_insensitive(client):
creation_status = f.TaskStatusFactory() creation_status = f.TaskStatusFactory()
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"]) role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])

View File

@ -179,6 +179,30 @@ def test_push_event_user_story_processing(client):
assert len(mail.outbox) == 1 assert len(mail.outbox) == 1
def test_push_event_multiple_actions(client):
creation_status = f.IssueStatusFactory()
role = f.RoleFactory(project=creation_status.project, permissions=["view_issues"])
f.MembershipFactory(project=creation_status.project, role=role, user=creation_status.project.owner)
new_status = f.IssueStatusFactory(project=creation_status.project)
issue1 = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
issue2 = f.IssueFactory.create(status=creation_status, project=creation_status.project, owner=creation_status.project.owner)
payload = {"commits": [
{"message": """test message
test TG-%s #%s ok
test TG-%s #%s ok
bye!
""" % (issue1.ref, new_status.slug, issue2.ref, new_status.slug)},
]}
mail.outbox = []
ev_hook1 = event_hooks.PushEventHook(issue1.project, payload)
ev_hook1.process_event()
issue1 = Issue.objects.get(id=issue1.id)
issue2 = Issue.objects.get(id=issue2.id)
assert issue1.status.id == new_status.id
assert issue2.status.id == new_status.id
assert len(mail.outbox) == 2
def test_push_event_processing_case_insensitive(client): def test_push_event_processing_case_insensitive(client):
creation_status = f.TaskStatusFactory() creation_status = f.TaskStatusFactory()
role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"]) role = f.RoleFactory(project=creation_status.project, permissions=["view_tasks"])