356 lines
11 KiB
Python
356 lines
11 KiB
Python
import src.forms.exceptions as forms_exceptions
|
|
import src.forms.service as service
|
|
import src.messages as messages
|
|
import tests.factories.forms as form_factory
|
|
from fastapi.exceptions import HTTPException
|
|
from src import models
|
|
from src.auth.auth import get_current_user
|
|
from src.main import app
|
|
|
|
|
|
class TestForms:
|
|
def test_get_all(self, client, mocker, mock_session, mock_user):
|
|
mock_results = [
|
|
form_factory.form_public_factory(name="test 1", id=1),
|
|
form_factory.form_public_factory(name="test 2", id=2),
|
|
form_factory.form_public_factory(name="test 3", id=3),
|
|
]
|
|
mock = mocker.patch.object(
|
|
service,
|
|
'get_all',
|
|
return_value=mock_results
|
|
)
|
|
|
|
response = client.get('/api/forms/referents')
|
|
response_data = response.json()
|
|
assert response.status_code == 200
|
|
assert response_data[0]['id'] == 1
|
|
assert len(response_data) == len(mock_results)
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
[],
|
|
[],
|
|
False,
|
|
mock_user,
|
|
)
|
|
|
|
def test_get_all_filters(self, client, mocker, mock_session, mock_user):
|
|
mock_results = [
|
|
form_factory.form_public_factory(name="test 2", id=2),
|
|
]
|
|
mock = mocker.patch.object(
|
|
service,
|
|
'get_all',
|
|
return_value=mock_results
|
|
)
|
|
|
|
response = client.get(
|
|
'/api/forms/referents?current_season=true&seasons=hiver-2025&productors=test productor')
|
|
response_data = response.json()
|
|
assert response.status_code == 200
|
|
assert response_data[0]['id'] == 2
|
|
assert len(response_data) == len(mock_results)
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
['hiver-2025'],
|
|
['test productor'],
|
|
True,
|
|
mock_user,
|
|
)
|
|
|
|
def test_get_all_unauthorized(
|
|
self,
|
|
client,
|
|
mocker,
|
|
mock_session,
|
|
mock_user):
|
|
def unauthorized():
|
|
raise HTTPException(status_code=401)
|
|
|
|
app.dependency_overrides[get_current_user] = unauthorized
|
|
|
|
mock = mocker.patch('src.forms.service.get_all')
|
|
response = client.get('/api/forms/referents')
|
|
|
|
assert response.status_code == 401
|
|
mock.assert_not_called()
|
|
|
|
app.dependency_overrides.clear()
|
|
|
|
def test_get_one(self, client, mocker, mock_session, mock_user):
|
|
mock_result = form_factory.form_public_factory(name="test 2", id=2)
|
|
|
|
mock = mocker.patch.object(
|
|
service,
|
|
'get_one',
|
|
return_value=mock_result
|
|
)
|
|
|
|
response = client.get('/api/forms/2')
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 200
|
|
assert response_data['id'] == 2
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
2
|
|
)
|
|
|
|
def test_get_one_notfound(self, client, mocker, mock_session, mock_user):
|
|
mock_result = None
|
|
mock = mocker.patch.object(
|
|
service,
|
|
'get_one',
|
|
return_value=mock_result
|
|
)
|
|
response = client.get('/api/forms/2')
|
|
response_data = response.json()
|
|
assert response.status_code == 404
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
2
|
|
)
|
|
|
|
def test_create_one(self, client, mocker, mock_session, mock_user):
|
|
form_body = form_factory.form_body_factory(name='test form create')
|
|
form_create = form_factory.form_create_factory(name='test form create')
|
|
form_result = form_factory.form_public_factory(name='test form create')
|
|
|
|
mock = mocker.patch.object(
|
|
service,
|
|
'create_one',
|
|
return_value=form_result
|
|
)
|
|
|
|
response = client.post('/api/forms', json=form_body)
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 200
|
|
assert response_data['name'] == 'test form create'
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
form_create
|
|
)
|
|
|
|
def test_create_one_referer_notfound(
|
|
self, client, mocker, mock_session, mock_user):
|
|
form_body = form_factory.form_body_factory(
|
|
name='test form create', referer_id=12312)
|
|
form_create = form_factory.form_create_factory(
|
|
name='test form create', referer_id=12312)
|
|
|
|
mock = mocker.patch.object(
|
|
service, 'create_one', side_effect=forms_exceptions.UserNotFoundError(
|
|
messages.Messages.not_found('referer')))
|
|
|
|
response = client.post('/api/forms', json=form_body)
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 404
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
form_create
|
|
)
|
|
|
|
def test_create_one_productor_notfound(
|
|
self, client, mocker, mock_session, mock_user):
|
|
form_body = form_factory.form_body_factory(
|
|
name='test form create', productor_id=1231)
|
|
form_create = form_factory.form_create_factory(
|
|
name='test form create', productor_id=1231)
|
|
|
|
mock = mocker.patch.object(
|
|
service, 'create_one', side_effect=forms_exceptions.ProductorNotFoundError(
|
|
messages.Messages.not_found('productor')))
|
|
|
|
response = client.post('/api/forms', json=form_body)
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 404
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
form_create
|
|
)
|
|
|
|
def test_create_one_unauthorized(
|
|
self,
|
|
client,
|
|
mocker,
|
|
mock_session,
|
|
mock_user):
|
|
def unauthorized():
|
|
raise HTTPException(status_code=401)
|
|
form_body = form_factory.form_body_factory(name='test form create')
|
|
|
|
app.dependency_overrides[get_current_user] = unauthorized
|
|
|
|
mock = mocker.patch('src.forms.service.create_one')
|
|
response = client.post('/api/forms', json=form_body)
|
|
|
|
assert response.status_code == 401
|
|
mock.assert_not_called()
|
|
|
|
app.dependency_overrides.clear()
|
|
|
|
def test_update_one(self, client, mocker, mock_session, mock_user):
|
|
form_body = form_factory.form_body_factory(name='test form update')
|
|
form_update = form_factory.form_update_factory(name='test form update')
|
|
form_result = form_factory.form_public_factory(name='test form update')
|
|
|
|
mock = mocker.patch.object(
|
|
service,
|
|
'update_one',
|
|
return_value=form_result
|
|
)
|
|
|
|
response = client.put('/api/forms/2', json=form_body)
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 200
|
|
assert response_data['name'] == 'test form update'
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
2,
|
|
form_update
|
|
)
|
|
|
|
def test_update_one_notfound(
|
|
self,
|
|
client,
|
|
mocker,
|
|
mock_session,
|
|
mock_user):
|
|
form_body = form_factory.form_body_factory(name='test form update')
|
|
form_update = form_factory.form_update_factory(name='test form update')
|
|
|
|
mock = mocker.patch.object(
|
|
service, 'update_one', side_effect=forms_exceptions.FormNotFoundError(
|
|
messages.Messages.not_found('form')))
|
|
|
|
response = client.put('/api/forms/2', json=form_body)
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 404
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
2,
|
|
form_update
|
|
)
|
|
|
|
def test_update_one_referer_notfound(
|
|
self, client, mocker, mock_session, mock_user):
|
|
form_body = form_factory.form_body_factory(name='test form update')
|
|
form_update = form_factory.form_update_factory(name='test form update')
|
|
|
|
mock = mocker.patch.object(
|
|
service, 'update_one', side_effect=forms_exceptions.UserNotFoundError(
|
|
messages.Messages.not_found('referer')))
|
|
|
|
response = client.put('/api/forms/2', json=form_body)
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 404
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
2,
|
|
form_update
|
|
)
|
|
|
|
def test_update_one_productor_notfound(
|
|
self, client, mocker, mock_session, mock_user):
|
|
form_body = form_factory.form_body_factory(name='test form update')
|
|
form_update = form_factory.form_update_factory(name='test form update')
|
|
|
|
mock = mocker.patch.object(
|
|
service, 'update_one', side_effect=forms_exceptions.ProductorNotFoundError(
|
|
messages.Messages.not_found('productor')))
|
|
|
|
response = client.put('/api/forms/2', json=form_body)
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 404
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
2,
|
|
form_update
|
|
)
|
|
|
|
def test_update_one_unauthorized(
|
|
self,
|
|
client,
|
|
mocker,
|
|
mock_session,
|
|
mock_user):
|
|
def unauthorized():
|
|
raise HTTPException(status_code=401)
|
|
form_body = form_factory.form_body_factory(name='test form update')
|
|
|
|
app.dependency_overrides[get_current_user] = unauthorized
|
|
|
|
mock = mocker.patch('src.forms.service.update_one')
|
|
response = client.put('/api/forms/2', json=form_body)
|
|
|
|
assert response.status_code == 401
|
|
mock.assert_not_called()
|
|
|
|
app.dependency_overrides.clear()
|
|
|
|
def test_delete_one(self, client, mocker, mock_session, mock_user):
|
|
form_result = form_factory.form_public_factory(name='test form delete')
|
|
|
|
mock = mocker.patch.object(
|
|
service,
|
|
'delete_one',
|
|
return_value=form_result
|
|
)
|
|
|
|
response = client.delete('/api/forms/2')
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 200
|
|
assert response_data['name'] == 'test form delete'
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
2,
|
|
)
|
|
|
|
def test_delete_one_notfound(
|
|
self,
|
|
client,
|
|
mocker,
|
|
mock_session,
|
|
mock_user):
|
|
form_result = None
|
|
|
|
mock = mocker.patch.object(
|
|
service, 'delete_one', side_effect=forms_exceptions.FormNotFoundError(
|
|
messages.Messages.not_found('form')))
|
|
|
|
response = client.delete('/api/forms/2')
|
|
response_data = response.json()
|
|
|
|
assert response.status_code == 404
|
|
mock.assert_called_once_with(
|
|
mock_session,
|
|
2,
|
|
)
|
|
|
|
def test_delete_one_unauthorized(
|
|
self,
|
|
client,
|
|
mocker,
|
|
mock_session,
|
|
mock_user):
|
|
def unauthorized():
|
|
raise HTTPException(status_code=401)
|
|
|
|
app.dependency_overrides[get_current_user] = unauthorized
|
|
|
|
mock = mocker.patch('src.forms.service.delete_one')
|
|
response = client.delete('/api/forms/2')
|
|
|
|
assert response.status_code == 401
|
|
mock.assert_not_called()
|
|
|
|
app.dependency_overrides.clear()
|