Skip to content

Commit 6f19675

Browse files
committed
sistemato test execute test controllers
1 parent ba6ddb6 commit 6f19675

1 file changed

Lines changed: 88 additions & 38 deletions

File tree

Artificial_QI/test/infrastructure/adapter/input/rest/test_ExecuteTestControllers.py

Lines changed: 88 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from unittest import mock
1+
from unittest.mock import Mock, patch
22
import pytest
33
from flask import url_for
44
from application import create_app
@@ -18,9 +18,13 @@ def client(app):
1818
return app.test_client()
1919

2020
class TestExecuteTestController:
21-
def test_execute_test(self,client,app):
21+
def test_execute_test(self, client, app):
22+
"""Test per il controller di esecuzione del test."""
23+
2224
# Mocking the ExecuteTestUseCase
23-
mock_use_case = mock.Mock(spec=ExecuteTestUseCase)
25+
mock_use_case = Mock(spec=ExecuteTestUseCase)
26+
mock_status_use_case = Mock(spec=GetTestStatusUseCase)
27+
app.container.executeTestContainer.GetTestStatusService.override(mock_status_use_case)
2428
app.container.executeTestContainer.ExecuteTestService.override(mock_use_case)
2529

2630
# Mocking the return value of executeTest method
@@ -49,52 +53,80 @@ def test_execute_test(self,client,app):
4953
)
5054
}
5155
)
52-
mock_use_case.executeTest.return_value = result
53-
54-
with app.test_request_context():
55-
# Sending a POST request to the endpoint
56-
response = client.post(url_for('executeTest_blueprint.execute_test'))
57-
58-
# Asserting the response status code and data
59-
assert response.status_code == 200
60-
assert response.json == result.serialize()
61-
62-
def test_execute_test_no_result(self, client, app):
63-
# Mocking the ExecuteTestUseCase
64-
mock_use_case = mock.Mock(spec=ExecuteTestUseCase)
65-
app.container.executeTestContainer.ExecuteTestService.de(mock_use_case)
66-
67-
# Mocking the return value of executeTest method to return None
56+
6857
mock_use_case.executeTest.return_value = None
69-
70-
with app.test_request_context():
71-
# Sending a POST request to the endpoint
72-
response = client.post(url_for('executeTest_blueprint.execute_test'))
58+
mock_status_use_case.getTestStatus.return_value = {
59+
"starting": False,
60+
"in_progress": True,
61+
"completed": 1,
62+
"total": 2,
63+
"percentage": 50,
64+
"id_risultato": None
65+
}
66+
67+
def fake_thread_start():
68+
# simula il codice run_test_in_thread(...)
69+
mock_use_case.executeTest()
70+
71+
with patch("src.infrastructure.adapter.input.rest.ExecuteTestControllers.Thread") as mock_thread, \
72+
patch("src.infrastructure.adapter.input.rest.ExecuteTestControllers.time.sleep") as mock_sleep:
73+
74+
mock_thread_instance = mock_thread.return_value
75+
mock_thread_instance.start.side_effect = fake_thread_start
76+
77+
with app.test_request_context():
78+
# Sending a POST request to the endpoint
79+
response = client.post(url_for('executeTest_blueprint.execute_test'))
80+
81+
mock_thread_instance.start.assert_called_once()
82+
mock_sleep.assert_called_once_with(1)
7383

7484
# Asserting the response status code and data
75-
assert response.status_code == 500
76-
assert response.json == {"message": "Si è verificato un errore nel server, riprova più tardi"}
77-
78-
def test_execute_test_error(self, client, app):
79-
# Mocking the ExecuteTestUseCaseoverri
80-
mock_use_case = mock.Mock(spec=ExecuteTestUseCase)
85+
assert response.status_code == 200
86+
assert response.json == {"message": "Test avviato con successo"}
87+
mock_use_case.executeTest.assert_called_once()
88+
mock_status_use_case.getTestStatus.assert_called_once()
89+
90+
@pytest.mark.parametrize("error", [{"in_progress": False}, Exception()])
91+
def test_execute_test_error(self, client, app, error):
92+
# Mocking the ExecuteTestUseCaseoverride
93+
mock_use_case = Mock(spec=ExecuteTestUseCase)
94+
mock_status_use_case = Mock(spec=GetTestStatusUseCase)
95+
app.container.executeTestContainer.GetTestStatusService.override(mock_status_use_case)
8196
app.container.executeTestContainer.ExecuteTestService.override(mock_use_case)
82-
83-
# Mocking the return value of executeTest method to raise an exception
84-
mock_use_case.executeTest.side_effect = Exception()
85-
86-
with app.test_request_context():
87-
# Sending a POST request to the endpoint
88-
response = client.post(url_for('executeTest_blueprint.execute_test'))
97+
98+
if error is Exception:
99+
mock_use_case.executeTest.side_effect = error
100+
else:
101+
mock_status_use_case.getTestStatus.return_value = error
102+
103+
def fake_thread_start():
104+
# simula il codice run_test_in_thread(...)
105+
mock_use_case.executeTest()
106+
107+
with patch("src.infrastructure.adapter.input.rest.ExecuteTestControllers.Thread") as mock_thread, \
108+
patch("src.infrastructure.adapter.input.rest.ExecuteTestControllers.time.sleep") as mock_sleep:
109+
110+
mock_thread_instance = mock_thread.return_value
111+
mock_thread_instance.start.side_effect = fake_thread_start
112+
113+
with app.test_request_context():
114+
# Sending a POST request to the endpoint
115+
response = client.post(url_for('executeTest_blueprint.execute_test'))
116+
117+
mock_thread_instance.start.assert_called_once()
118+
mock_sleep.assert_called_once_with(1)
89119

90120
# Asserting the response status code and data
91121
assert response.status_code == 500
92122
assert response.json == {"message": "Si è verificato un errore nel server, riprova più tardi"}
123+
mock_use_case.executeTest.assert_called_once()
124+
mock_status_use_case.getTestStatus.assert_called_once()
93125

94126
class TestGetTestStatusController:
95127
def test_get_test_status(self, client, app):
96128
# Mocking the GetTestStatusUseCase
97-
mock_use_case = mock.Mock(spec=GetTestStatusUseCase)
129+
mock_use_case = Mock(spec=GetTestStatusUseCase)
98130
app.container.executeTestContainer.GetTestStatusService.override(mock_use_case)
99131

100132
# Mocking the return value of getTestStatus method
@@ -113,4 +145,22 @@ def test_get_test_status(self, client, app):
113145

114146
# Asserting the response status code and data
115147
assert response.status_code == 200
116-
assert response.json == mock_use_case.getTestStatus.return_value
148+
assert response.json == mock_use_case.getTestStatus.return_value
149+
mock_use_case.getTestStatus.assert_called_once()
150+
151+
def test_get_test_status_server_error(self, client, app):
152+
# Mocking the GetTestStatusUseCase
153+
mock_use_case = Mock(spec=GetTestStatusUseCase)
154+
app.container.executeTestContainer.GetTestStatusService.override(mock_use_case)
155+
156+
# Mocking the return value of getTestStatus method
157+
mock_use_case.getTestStatus.side_effect = Exception("Errore di test")
158+
159+
with app.test_request_context():
160+
# Sending a GET request to the endpoint
161+
response = client.get(url_for('executeTest_blueprint.test_status'))
162+
163+
# Asserting the response status code and data
164+
assert response.status_code == 500
165+
assert response.json == {"message": "Si è verificato un errore nel server, riprova più tardi"}
166+
mock_use_case.getTestStatus.assert_called_once()

0 commit comments

Comments
 (0)