Tests added
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
"""
|
||||
Tests for email functionality.
|
||||
"""
|
||||
import pytest
|
||||
from unittest.mock import patch, MagicMock
|
||||
from flask_mail import Message
|
||||
from app import send_resume_email
|
||||
|
||||
|
||||
class TestEmailSending:
|
||||
"""Tests for email sending functionality."""
|
||||
|
||||
def test_send_resume_email_success(self, app):
|
||||
"""Test successfully sending a resume email."""
|
||||
with patch('app.mail.send') as mock_send:
|
||||
result = send_resume_email('test@example.com', 'test-session-123', 'Software Developer')
|
||||
|
||||
assert result is True
|
||||
assert mock_send.called
|
||||
|
||||
def test_send_resume_email_failure(self, app):
|
||||
"""Test handling email sending failure."""
|
||||
with patch('app.mail.send') as mock_send:
|
||||
mock_send.side_effect = Exception('SMTP error')
|
||||
|
||||
result = send_resume_email('test@example.com', 'test-session-123', 'Test Job')
|
||||
|
||||
assert result is False
|
||||
|
||||
def test_resume_email_content(self, app):
|
||||
"""Test that resume email contains correct content."""
|
||||
with patch('app.mail.send') as mock_send:
|
||||
send_resume_email('applicant@example.com', 'abc-123', 'Marketing Manager')
|
||||
|
||||
# Get the Message object that was passed to send()
|
||||
assert mock_send.called
|
||||
call_args = mock_send.call_args
|
||||
message = call_args[0][0] if call_args[0] else None
|
||||
|
||||
if message:
|
||||
assert isinstance(message, Message)
|
||||
assert 'applicant@example.com' in message.recipients
|
||||
assert 'Bewerbung' in message.subject or 'Marketing Manager' in message.subject
|
||||
|
||||
def test_resume_link_in_email(self, app):
|
||||
"""Test that resume link is included in email body."""
|
||||
with patch('app.mail.send') as mock_send:
|
||||
send_resume_email('test@example.com', 'session-xyz', 'Test Position')
|
||||
|
||||
if mock_send.called:
|
||||
call_args = mock_send.call_args
|
||||
message = call_args[0][0] if call_args[0] else None
|
||||
|
||||
if message and hasattr(message, 'body'):
|
||||
assert 'session-xyz' in message.body or '/resume/' in message.body
|
||||
|
||||
|
||||
class TestEmailIntegration:
|
||||
"""Tests for email integration with application workflow."""
|
||||
|
||||
def test_email_sent_on_initial_submission(self, client, app):
|
||||
"""Test that email is sent when user submits their email address."""
|
||||
with patch('app.mail.send') as mock_send:
|
||||
response = client.post('/apply/submit-email', data={
|
||||
'email': 'newuser@example.com',
|
||||
'job_name': 'Junior Developer'
|
||||
}, follow_redirects=True)
|
||||
|
||||
assert response.status_code == 200
|
||||
# Email should be sent
|
||||
assert mock_send.called or app.config.get('MAIL_SUPPRESS_SEND') is True
|
||||
|
||||
def test_email_suppressed_in_testing(self, app):
|
||||
"""Test that email is suppressed during testing."""
|
||||
assert app.config['TESTING'] is True
|
||||
assert app.config.get('MAIL_SUPPRESS_SEND') is True
|
||||
|
||||
|
||||
class TestEmailConfiguration:
|
||||
"""Tests for email configuration."""
|
||||
|
||||
def test_email_config_exists(self, app):
|
||||
"""Test that email configuration is set."""
|
||||
assert 'MAIL_SERVER' in app.config
|
||||
assert 'MAIL_PORT' in app.config
|
||||
assert 'MAIL_USE_TLS' in app.config
|
||||
|
||||
def test_mail_suppress_send_in_testing(self, app):
|
||||
"""Test that email sending is suppressed in test mode."""
|
||||
assert app.config['TESTING'] is True
|
||||
assert app.config['MAIL_SUPPRESS_SEND'] is True
|
||||
Reference in New Issue
Block a user