diff --git a/conservancy/usethesource/tests.py b/conservancy/usethesource/tests.py new file mode 100644 index 0000000000000000000000000000000000000000..e13d83edbcd33405b1f85cc09f53b58912c49494 --- /dev/null +++ b/conservancy/usethesource/tests.py @@ -0,0 +1,56 @@ +import datetime +import re + +from django.contrib.auth.models import User +import pytest + +from . import models +from .emails import make_comment_email +from .models import Candidate, Comment + + +def make_candidate(save=False, **kwargs): + defaults = { + 'name': 'Test Candidate', + 'slug': 'test', + 'vendor': 'test vendor', + 'device': 'test device', + 'release_date': datetime.datetime(2000, 1, 1, tzinfo=datetime.timezone.utc) + } + merged = defaults | kwargs + obj = Candidate(**merged) + if save: + obj.save() + return obj + + +def test_message_id(): + assert re.match(r'<.+@.+>', models.gen_message_id()) + + +@pytest.mark.django_db +def test_comment_knows_comment_its_replying_to(): + user = User.objects.create() + candidate = make_candidate(name='Test Candidate', save=True) + first_comment = Comment.objects.create(user=user, candidate=candidate) + second_comment = Comment.objects.create(user=user, candidate=candidate) + assert second_comment._find_previous_comment() == first_comment + assert second_comment.in_reply_to() == first_comment.email_message_id + + +@pytest.mark.django_db +def test_comment_email(): + user = User.objects.create(first_name='Test', last_name='User') + candidate = make_candidate(name='Test Candidate', save=True) + models.Comment.objects.create(candidate=candidate, user=user) + second_comment = models.Comment.objects.create( + candidate=candidate, + user=user, + message='Test message', + ) + email = make_comment_email(second_comment) + assert 'Message-ID' in email.extra_headers + assert 'In-Reply-To' in email.extra_headers + assert email.subject == 'Re: Test Candidate' + assert 'Test message' in email.body + assert 'Test User' in email.body