2019-03-11 07:04:19 +00:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
from django.core import mail
|
|
|
|
|
|
|
|
from todo.models import Task, Comment
|
|
|
|
from todo.mail.consumers import tracker_consumer
|
|
|
|
from email.message import EmailMessage
|
|
|
|
|
|
|
|
|
|
|
|
def consumer(*args, title_format="[TEST] {subject}", **kwargs):
|
|
|
|
return tracker_consumer(
|
2019-04-12 07:09:01 +00:00
|
|
|
group="Workgroup One", task_list_slug="zip", priority=1, task_title_format=title_format
|
2019-03-11 07:04:19 +00:00
|
|
|
)(*args, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def make_message(subject, content):
|
|
|
|
msg = EmailMessage()
|
|
|
|
msg.set_content(content)
|
2019-04-12 07:09:01 +00:00
|
|
|
msg["Subject"] = subject
|
2019-03-11 07:04:19 +00:00
|
|
|
return msg
|
|
|
|
|
|
|
|
|
|
|
|
def test_tracker_task_creation(todo_setup, django_user_model):
|
|
|
|
msg = make_message("test1 subject", "test1 content")
|
2019-04-12 07:09:01 +00:00
|
|
|
msg["From"] = "test1@example.com"
|
|
|
|
msg["Message-ID"] = "<a@example.com>"
|
2019-03-11 07:04:19 +00:00
|
|
|
|
|
|
|
# test task creation
|
|
|
|
task_count = Task.objects.count()
|
|
|
|
consumer([msg])
|
|
|
|
|
|
|
|
assert task_count + 1 == Task.objects.count(), "task wasn't created"
|
|
|
|
task = Task.objects.filter(title="[TEST] test1 subject").first()
|
|
|
|
assert task is not None, "task was created with the wrong name"
|
|
|
|
|
|
|
|
# test thread answers
|
|
|
|
msg = make_message("test2 subject", "test2 content")
|
2019-04-12 07:09:01 +00:00
|
|
|
msg["From"] = "test1@example.com"
|
|
|
|
msg["Message-ID"] = "<b@example.com>"
|
|
|
|
msg["References"] = "<nope@example.com> <a@example.com>"
|
2019-03-11 07:04:19 +00:00
|
|
|
|
|
|
|
task_count = Task.objects.count()
|
|
|
|
consumer([msg])
|
|
|
|
assert task_count == Task.objects.count(), "comment created another task"
|
|
|
|
Comment.objects.get(
|
2019-04-12 07:09:01 +00:00
|
|
|
task=task, body__contains="test2 content", email_message_id="<b@example.com>"
|
2019-03-11 07:04:19 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
# test notification answer
|
|
|
|
msg = make_message("test3 subject", "test3 content")
|
2019-04-12 07:09:01 +00:00
|
|
|
msg["From"] = "test1@example.com"
|
|
|
|
msg["Message-ID"] = "<c@example.com>"
|
|
|
|
msg["References"] = "<thread-{}@django-todo> <unknown@example.com>".format(task.pk)
|
2019-03-11 07:04:19 +00:00
|
|
|
|
|
|
|
task_count = Task.objects.count()
|
|
|
|
consumer([msg])
|
|
|
|
assert task_count == Task.objects.count(), "comment created another task"
|
|
|
|
Comment.objects.get(
|
2019-04-12 07:09:01 +00:00
|
|
|
task=task, body__contains="test3 content", email_message_id="<c@example.com>"
|
2019-03-11 07:04:19 +00:00
|
|
|
)
|