Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

improve models test coverage #94

Merged
merged 1 commit into from
Oct 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/email_relay/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class Meta:

def __str__(self):
try:
return f'{self.created_at} "{self.data["subject"]}" to {", ".join(self.data["to"])}'
return f'{self.created_at} "{self.data["subject"]}" to {", ".join(self.data["recipient_list"])}'
except Exception:
return f"{self.created_at} <invalid message>"

Expand Down
49 changes: 47 additions & 2 deletions tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ def data(self):
return {
"subject": "Test",
"message": "Test",
"html_message": "<p>Test</p>",
"from_email": "from@example.com",
"recipient_list": ["to@example.com"],
}
Expand All @@ -142,8 +143,12 @@ def email(self):
to=["to@example.com"],
)

def test_create_message(self, data):
message = Message.objects.create(data=data)
@pytest.fixture
def queued_message(self, data):
return baker.make("email_relay.Message", data=data, status=Status.QUEUED)

def test_create(self, data):
message = baker.make("email_relay.Message", data=data)

assert message.data == data
assert message.priority == Priority.LOW
Expand All @@ -152,6 +157,46 @@ def test_create_message(self, data):
assert message.log == ""
assert message.sent_at is None

def test_str(self, data):
message = baker.make("email_relay.Message", data=data)

assert data["subject"] in str(message)

def test_str_invalid_data(self):
message = baker.make("email_relay.Message", data={})

assert "invalid message" in str(message)

def test_update_with_update_fields(self, data):
message = baker.make("email_relay.Message", data=data)
updated_at_original = message.updated_at

message.retry_count = 1
message.save(update_fields=["retry_count"])

assert message.updated_at != updated_at_original

def test_mark_sent(self, queued_message):
queued_message.mark_sent()

assert queued_message.status == Status.SENT

def test_defer(self, queued_message):
queued_message.defer()

assert queued_message.status == Status.DEFERRED

def test_fail(self, queued_message):
queued_message.fail()

assert queued_message.status == Status.FAILED

def test_no_data(self):
message = baker.make("email_relay.Message", data={})

assert message.data == {}
assert message.email is None

def test_email_property(self, data):
message = Message.objects.create(data=data)

Expand Down