SIENTIAPDE-1172
refactor: simplify EmailBuilder parameters and remove unused templates - Removed unused template file attributes from EmailBuilder class. - Updated parameters method to eliminate report_data argument, streamlining the function for better clarity and efficiency.
This commit is contained in:
145
tests/orchestrator/utils/test_email_builder.py
Normal file
145
tests/orchestrator/utils/test_email_builder.py
Normal file
@@ -0,0 +1,145 @@
|
||||
import json
|
||||
from unittest.mock import MagicMock, patch
|
||||
from pytest import fixture
|
||||
|
||||
from orchestrator.utils.email_builder import EmailBuilder
|
||||
|
||||
|
||||
@fixture
|
||||
@patch('orchestrator.utils.email_builder.open')
|
||||
def report_builder(open):
|
||||
return EmailBuilder(MagicMock())
|
||||
|
||||
|
||||
@patch('orchestrator.utils.email_builder.Template')
|
||||
def test_replace_parameters(template, report_builder):
|
||||
output = report_builder.replace_parameters('template', {'key': 'value'})
|
||||
|
||||
assert output == template.return_value.render.return_value
|
||||
|
||||
template.assert_called_once_with('template')
|
||||
template.return_value.render.assert_called_once_with({'key': 'value'})
|
||||
|
||||
|
||||
def test_parameters(report_builder):
|
||||
report_builder.replace_parameters = MagicMock()
|
||||
general_events = {
|
||||
'ERROR': {
|
||||
'models': [
|
||||
{'model_name': 'model_name', 'events': [
|
||||
{'notification_id': 'ID_1', 'level': 'ERROR', 'project': 'project'}]},
|
||||
]
|
||||
},
|
||||
'WARNING': {
|
||||
'models': [
|
||||
{'model_name': 'model_name', 'events': [
|
||||
{'notification_id': 'ID_2', 'level': 'WARNING', 'project': 'project'}]},
|
||||
]
|
||||
},
|
||||
'INFO': {
|
||||
'models': [
|
||||
{'model_name': 'model_name', 'events': [
|
||||
{'notification_id': 'ID_3', 'level': 'INFO', 'project': 'project'}]},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
output = report_builder.parameters(general_events, 'model_name')
|
||||
|
||||
assert output == {
|
||||
'mail_type': 'model_name',
|
||||
'error_events': report_builder.replace_parameters.return_value,
|
||||
'warning_events': report_builder.replace_parameters.return_value,
|
||||
'info_events': report_builder.replace_parameters.return_value,
|
||||
}
|
||||
|
||||
report_builder.replace_parameters.assert_any_call(
|
||||
report_builder.general_template,
|
||||
{'models': [
|
||||
{'model_name': 'model_name', 'events': [
|
||||
{'notification_id': 'ID_1', 'level': 'ERROR', 'project': 'project'}]},
|
||||
]}
|
||||
)
|
||||
report_builder.replace_parameters.assert_any_call(
|
||||
report_builder.general_template,
|
||||
{'models': [
|
||||
{'model_name': 'model_name', 'events': [
|
||||
{'notification_id': 'ID_2', 'level': 'WARNING', 'project': 'project'}]},
|
||||
]}
|
||||
)
|
||||
report_builder.replace_parameters.assert_any_call(
|
||||
report_builder.general_template,
|
||||
{'models': [
|
||||
{'model_name': 'model_name', 'events': [
|
||||
{'notification_id': 'ID_3', 'level': 'INFO', 'project': 'project'}]},
|
||||
]}
|
||||
)
|
||||
|
||||
|
||||
def test_build_email(report_builder):
|
||||
report_builder.parameters = MagicMock()
|
||||
report_builder.replace_parameters = MagicMock()
|
||||
|
||||
report_data = [
|
||||
{'notification_id': 'ID_1', 'level': 'ERROR',
|
||||
'project': 'project', 'model_name': 'model_name'},
|
||||
{'notification_id': 'ID_2', 'level': 'WARNING',
|
||||
'project': 'project', 'model_name': 'model_name'},
|
||||
{'notification_id': 'ID_2', 'level': 'INFO',
|
||||
'project': 'project', 'model_name': 'model_name'},
|
||||
{'notification_id': 'ID_3', 'level': 'ERROR',
|
||||
'project': 'project', 'model_name': 'model_name'}
|
||||
]
|
||||
|
||||
html = report_builder.build_email(report_data, 'type_1')
|
||||
|
||||
report_builder.replace_parameters.assert_called_once_with(
|
||||
report_builder.report_template,
|
||||
report_builder.parameters.return_value
|
||||
)
|
||||
|
||||
assert html == report_builder.replace_parameters.return_value
|
||||
|
||||
report_builder.parameters.assert_called_once_with(
|
||||
{
|
||||
'ERROR': {
|
||||
'section_name': 'Errors detected:',
|
||||
'models': [
|
||||
{
|
||||
'model_name': 'model_name',
|
||||
'events': [
|
||||
{'notification_id': 'ID_1', 'level': 'ERROR',
|
||||
'project': 'project', 'model_name': 'model_name'},
|
||||
{'notification_id': 'ID_3', 'level': 'ERROR',
|
||||
'project': 'project', 'model_name': 'model_name'}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
'WARNING': {
|
||||
'section_name': 'Warnings detected:',
|
||||
'models': [
|
||||
{
|
||||
'model_name': 'model_name',
|
||||
'events': [
|
||||
{'notification_id': 'ID_2', 'level': 'WARNING',
|
||||
'project': 'project', 'model_name': 'model_name'}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
'INFO': {
|
||||
'section_name': 'Infos detected:',
|
||||
'models': [
|
||||
{
|
||||
'model_name': 'model_name',
|
||||
'events': [
|
||||
{'notification_id': 'ID_2', 'level': 'INFO',
|
||||
'project': 'project', 'model_name': 'model_name'}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
'type_1'
|
||||
)
|
||||
Reference in New Issue
Block a user