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:
@@ -12,11 +12,6 @@ class EmailBuilder:
|
||||
self.report_template_file = './orchestrator/utils/templates/email_template.html'
|
||||
self.general_template_file = './orchestrator/utils/templates/general_template.html'
|
||||
|
||||
self.tag_template_file = './orchestrator/utils/templates/opc_tag_report_template.html'
|
||||
self.opc_template_file = './orchestrator/utils/templates/opc_connection_report_template.html'
|
||||
|
||||
self.partition_manager_template_file = './orchestrator/utils/templates/partition_manager_report_template.html'
|
||||
|
||||
with open(self.report_template_file, 'r') as file:
|
||||
self.report_template = file.read()
|
||||
with open(self.general_template_file, 'r') as file:
|
||||
@@ -28,9 +23,8 @@ class EmailBuilder:
|
||||
|
||||
return template.render(parameters)
|
||||
|
||||
def parameters(self, report_data: dict, general_events: dict, mail_type: str) -> dict:
|
||||
def parameters(self, general_events: dict, mail_type: str) -> dict:
|
||||
return {
|
||||
'project_name': report_data[0]['project'],
|
||||
'mail_type': mail_type,
|
||||
'error_events': self.replace_parameters(self.general_template,
|
||||
general_events['ERROR']) if general_events['ERROR']['models'] else '',
|
||||
@@ -66,10 +60,10 @@ class EmailBuilder:
|
||||
general_events[level]['models'][model_name]['events'].append(
|
||||
report)
|
||||
|
||||
print(general_events)
|
||||
for _type, content in general_events.items():
|
||||
content['models'] = list(content['models'].values())
|
||||
|
||||
return self.replace_parameters(self.report_template, self.parameters(
|
||||
report_data, general_events, mail_type
|
||||
return self.replace_parameters(
|
||||
self.report_template, self.parameters(
|
||||
general_events, mail_type
|
||||
))
|
||||
|
||||
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