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