fix tests

This commit is contained in:
Julien Aldon
2026-03-06 11:26:02 +01:00
parent b4b4fa7643
commit c27c7598b5
10 changed files with 586 additions and 147 deletions

View File

@@ -203,7 +203,7 @@ def get_contract_files(
user: models.User = Depends(get_current_user)
):
"""Get all contract files for a given form"""
if not form_service.is_allowed(session, user, form_id):
if not service.is_allowed(session, user, form_id):
raise HTTPException(
status_code=403,
detail=messages.Messages.not_allowed('contracts', 'get')

View File

@@ -113,7 +113,7 @@ def create_row_style_height(size: str) -> odfdo.Style:
)
def create_currency_style(name:str = 'currency-euro'):
def create_currency_style(name: str = 'currency-euro'):
"""Create a table currency style.
Paramenters:
name(str): name of the style (default to `currency-euro`).
@@ -129,6 +129,7 @@ def create_currency_style(name:str = 'currency-euro'):
</number:currency-style>"""
)
def create_cell_style(
name: str = "centered-cell",
font_size: str = '10pt',
@@ -384,12 +385,12 @@ def transform_formula_cells(sheet: odfdo.Spreadsheet):
def merge_shipment_cells(
sheet: odfdo.Spreadsheet,
prefix_header: list[str],
recurrents: list[str],
occasionnals: list[str],
shipments: list[models.Shipment]
):
sheet: odfdo.Spreadsheet,
prefix_header: list[str],
recurrents: list[str],
occasionnals: list[str],
shipments: list[models.Shipment]
):
"""Merge cells for shipment header.
"""
index = len(prefix_header) + len(recurrents) + 1
@@ -399,6 +400,7 @@ def merge_shipment_cells(
sheet.set_span((startcol, 0, endcol, 0), merge=True)
index += len(occasionnals)
def generate_recap(
contracts: list[models.Contract],
form: models.Form,
@@ -411,14 +413,14 @@ def generate_recap(
'3': 'Piece'
}
recurrents = [
f'{pr.name}{f' - {pr.quantity}{pr.quantity_unit}'
f'{pr.name}{f' - {pr.quantity}{pr.quantity_unit}'
if pr.quantity else ''} ({product_unit_map[pr.unit]})'
for pr in form.productor.products
if pr.type == models.ProductType.RECCURENT
]
recurrents.sort()
occasionnals = [
f'{pr.name}{f' - {pr.quantity}{pr.quantity_unit}'
f'{pr.name}{f' - {pr.quantity}{pr.quantity_unit}'
if pr.quantity else ''} ({product_unit_map[pr.unit]})'
for pr in form.productor.products
if pr.type == models.ProductType.OCCASIONAL
@@ -468,7 +470,7 @@ def generate_recap(
len(info_header)+len(payment_formula_letters)+len(recurrents) + 1
]
occasionnals_formula_letters = letters[
len(info_header)+len(payment_formula_letters)+
len(info_header)+len(payment_formula_letters) +
len(recurent_formula_letters):
len(info_header)+len(payment_formula_letters) +
len(recurent_formula_letters)+len(occasionnals_header) + 1
@@ -489,14 +491,14 @@ def generate_recap(
prices = compute_contract_prices(contract)
occasionnal_sorted = sorted(
[
product for product in contract.products
product for product in contract.products
if product.product.type == models.ProductType.OCCASIONAL
],
key=lambda x: (x.shipment.name, x.product.name)
)
recurrent_sorted = sorted(
[
product for product in contract.products
product for product in contract.products
if product.product.type == models.ProductType.RECCURENT
],
key=lambda x: x.product.name

View File

@@ -7,6 +7,8 @@ from src.auth.auth import get_current_user
from src.database import get_session
from src.main import app
from .fixtures import *
@pytest.fixture
def mock_session(mocker):

View File

@@ -17,19 +17,19 @@ from src import models
@pytest.fixture
def productor(session: Session) -> models.ProductorPublic:
productor = productors_service.create_one(
result = productors_service.create_one(
session,
productors_factory.productor_create_factory(
name='test productor',
type='Légumineuses',
)
)
return productor
return result
@pytest.fixture
def productors(session: Session) -> models.ProductorPublic:
productors = [
result = [
productors_service.create_one(
session,
productors_factory.productor_create_factory(
@@ -45,13 +45,15 @@ def productors(session: Session) -> models.ProductorPublic:
)
)
]
return productors
return result
@pytest.fixture
def products(session: Session,
productor: models.ProductorPublic) -> list[models.ProductPublic]:
products = [
def products(
session: Session,
productor: models.ProductorPublic
) -> list[models.ProductPublic]:
result = [
products_service.create_one(
session,
products_factory.product_create_factory(
@@ -69,7 +71,7 @@ def products(session: Session,
)
),
]
return products
return result
@pytest.fixture
@@ -87,7 +89,7 @@ def user(session: Session) -> models.UserPublic:
@pytest.fixture
def users(session: Session) -> list[models.UserPublic]:
users = [
result = [
users_service.create_one(
session,
users_factory.user_create_factory(
@@ -112,12 +114,12 @@ def users(session: Session) -> list[models.UserPublic]:
name='test user 3',
email='test3@test.com',
role_names=['Porc-Agneau']))]
return users
return result
@pytest.fixture
def referer(session: Session) -> models.UserPublic:
referer = users_service.create_one(
result = users_service.create_one(
session,
users_factory.user_create_factory(
name='test referer',
@@ -125,14 +127,16 @@ def referer(session: Session) -> models.UserPublic:
role_names=['Légumineuses'],
)
)
return referer
return result
@pytest.fixture
def shipments(session: Session,
forms: list[models.FormPublic],
products: list[models.ProductPublic]):
shipments = [
def shipments(
session: Session,
forms: list[models.FormPublic],
products: list[models.ProductPublic]
):
result = [
shipments_service.create_one(
session,
shipments_factory.shipment_create_factory(
@@ -152,7 +156,7 @@ def shipments(session: Session,
)
),
]
return shipments
return result
@pytest.fixture
@@ -161,7 +165,7 @@ def forms(
productor: models.ProductorPublic,
referer: models.UserPublic
) -> list[models.FormPublic]:
forms = [
result = [
forms_service.create_one(
session,
forms_factory.form_create_factory(
@@ -181,4 +185,4 @@ def forms(
)
)
]
return forms
return result

View File

@@ -7,10 +7,10 @@ from src.main import app
class TestContracts:
def test_get_all(
self,
client,
mocker,
mock_session,
self,
client,
mocker,
mock_session,
mock_user
):
mock_results = [
@@ -36,10 +36,10 @@ class TestContracts:
)
def test_get_all_filters(
self,
client,
mocker,
mock_session,
self,
client,
mocker,
mock_session,
mock_user
):
mock_results = [
@@ -81,10 +81,11 @@ class TestContracts:
app.dependency_overrides.clear()
def test_get_one(
self,
client,
mocker,
mock_session,
self,
client,
mocker,
mock_session,
mock_user,
):
mock_result = contract_factory.contract_public_factory(id=2)
@@ -93,7 +94,7 @@ class TestContracts:
'get_one',
return_value=mock_result
)
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
@@ -107,12 +108,18 @@ class TestContracts:
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
2
)
def test_get_one_notfound(
self,
client,
mocker,
mock_session,
self,
client,
mocker,
mock_session,
mock_user,
):
mock_result = None
mock = mocker.patch.object(
@@ -120,18 +127,23 @@ class TestContracts:
'get_one',
return_value=mock_result
)
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.get('/api/contracts/2')
assert response.status_code == 404
mock.assert_called_once_with(
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
2
)
def test_get_one_unauthorized(
self,
@@ -152,10 +164,11 @@ class TestContracts:
app.dependency_overrides.clear()
def test_delete_one(
self,
client,
mocker,
self,
client,
mocker,
mock_session,
mock_user,
):
contract_result = contract_factory.contract_public_factory()
@@ -164,8 +177,7 @@ class TestContracts:
'delete_one',
return_value=contract_result
)
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
@@ -178,12 +190,18 @@ class TestContracts:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
2
)
def test_delete_one_notfound(
self,
client,
mocker,
mock_session,
mock_user,
):
contract_result = None
@@ -192,8 +210,7 @@ class TestContracts:
'delete_one',
return_value=contract_result
)
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
@@ -206,6 +223,11 @@ class TestContracts:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
2
)
def test_delete_one_unauthorized(
self,

View File

@@ -92,6 +92,7 @@ class TestForms:
client,
mocker,
mock_session,
mock_user,
):
mock_result = form_factory.form_public_factory(name="test 2", id=2)
@@ -100,7 +101,6 @@ class TestForms:
'get_one',
return_value=mock_result
)
response = client.get('/api/forms/2')
response_data = response.json()
@@ -110,6 +110,7 @@ class TestForms:
mock_session,
2
)
assert mock_user
def test_get_one_notfound(
self,
@@ -135,6 +136,7 @@ class TestForms:
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')
@@ -145,6 +147,11 @@ class TestForms:
'create_one',
return_value=form_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.post('/api/forms', json=form_body)
response_data = response.json()
@@ -155,43 +162,76 @@ class TestForms:
mock_session,
form_create
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
form=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)
name='test form create', referer_id=12312
)
form_create = form_factory.form_create_factory(
name='test form create', referer_id=12312)
name='test form create', referer_id=12312
)
mock = mocker.patch.object(
service, 'create_one', side_effect=forms_exceptions.UserNotFoundError(
messages.Messages.not_found('referer')))
service,
'create_one',
side_effect=forms_exceptions.UserNotFoundError(
messages.Messages.not_found('referer')
)
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.post('/api/forms', json=form_body)
assert response.status_code == 404
mock.assert_called_once_with(
mock_session,
form_create
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
form=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)
name='test form create', productor_id=1231
)
form_create = form_factory.form_create_factory(
name='test form create', productor_id=1231)
name='test form create', productor_id=1231
)
mock = mocker.patch.object(
service, 'create_one', side_effect=forms_exceptions.ProductorNotFoundError(
messages.Messages.not_found('productor')))
service,
'create_one',
side_effect=forms_exceptions.ProductorNotFoundError(
messages.Messages.not_found('productor')
)
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.post('/api/forms', json=form_body)
@@ -200,6 +240,11 @@ class TestForms:
mock_session,
form_create
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
form=form_create
)
def test_create_one_unauthorized(
self,
@@ -225,6 +270,7 @@ class TestForms:
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')
@@ -235,6 +281,11 @@ class TestForms:
'update_one',
return_value=form_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.put('/api/forms/2', json=form_body)
response_data = response.json()
@@ -246,19 +297,34 @@ class TestForms:
2,
form_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
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')))
service,
'update_one',
side_effect=forms_exceptions.FormNotFoundError(
messages.Messages.not_found('form')
)
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.put('/api/forms/2', json=form_body)
@@ -268,19 +334,32 @@ class TestForms:
2,
form_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
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')))
messages.Messages.not_found('referer')
)
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.put('/api/forms/2', json=form_body)
@@ -290,19 +369,34 @@ class TestForms:
2,
form_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
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')))
service,
'update_one',
side_effect=forms_exceptions.ProductorNotFoundError(
messages.Messages.not_found('productor')
)
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.put('/api/forms/2', json=form_body)
@@ -312,6 +406,11 @@ class TestForms:
2,
form_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_update_one_unauthorized(
self,
@@ -337,6 +436,7 @@ class TestForms:
client,
mocker,
mock_session,
mock_user,
):
form_result = form_factory.form_public_factory(name='test form delete')
@@ -345,6 +445,11 @@ class TestForms:
'delete_one',
return_value=form_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.delete('/api/forms/2')
response_data = response.json()
@@ -355,19 +460,30 @@ class TestForms:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_delete_one_notfound(
self,
client,
mocker,
mock_session,
mock_user,
):
mock = mocker.patch.object(
service,
'delete_one',
'delete_one',
side_effect=forms_exceptions.FormNotFoundError(
messages.Messages.not_found('form'))
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.delete('/api/forms/2')
@@ -376,6 +492,11 @@ class TestForms:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_delete_one_unauthorized(
self,

View File

@@ -94,7 +94,7 @@ class TestProductors:
mock_result = productor_factory.productor_public_factory(
name="test 2", id=2)
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
@@ -116,6 +116,12 @@ class TestProductors:
2
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_get_one_notfound(
self,
client,
@@ -123,12 +129,14 @@ class TestProductors:
mock_session,
mock_user,
):
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
mock_result = None
mock = mocker.patch.object(
service,
'get_one',
@@ -140,6 +148,11 @@ class TestProductors:
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_get_one_unauthorized(
self,
@@ -173,7 +186,7 @@ class TestProductors:
productor_result = productor_factory.productor_public_factory(
name='test productor create')
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
@@ -194,6 +207,11 @@ class TestProductors:
mock_session,
productor_create
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
productor=productor_create
)
def test_create_one_unauthorized(
self,
@@ -229,7 +247,7 @@ class TestProductors:
productor_result = productor_factory.productor_public_factory(
name='test productor update')
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
@@ -252,6 +270,12 @@ class TestProductors:
productor_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_update_one_notfound(
self,
client,
@@ -266,15 +290,15 @@ class TestProductors:
name='test productor update',
)
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
mock = mocker.patch.object(
service,
'update_one',
service,
'update_one',
side_effect=exceptions.ProductorNotFoundError(
messages.Messages.not_found('productor')
)
@@ -289,6 +313,11 @@ class TestProductors:
productor_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_update_one_unauthorized(
self,
@@ -310,7 +339,6 @@ class TestProductors:
app.dependency_overrides.clear()
def test_delete_one(
self,
client,
@@ -321,7 +349,7 @@ class TestProductors:
productor_result = productor_factory.productor_public_factory(
name='test productor delete')
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
@@ -342,6 +370,11 @@ class TestProductors:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_delete_one_notfound(
self,
@@ -350,11 +383,12 @@ class TestProductors:
mock_session,
mock_user,
):
mocker.patch.object(
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
mock = mocker.patch.object(
service,
'delete_one',
@@ -371,6 +405,12 @@ class TestProductors:
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_delete_one_unauthorized(
self,
client,

View File

@@ -68,10 +68,10 @@ class TestProducts:
)
def test_get_all_unauthorized(
self,
client,
mocker,
):
self,
client,
mocker,
):
def unauthorized():
raise HTTPException(status_code=401)
@@ -90,10 +90,17 @@ class TestProducts:
client,
mocker,
mock_session,
mock_user,
):
mock_result = product_factory.product_public_factory(
name="test 2", id=2)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
mock = mocker.patch.object(
service,
'get_one',
@@ -109,14 +116,25 @@ class TestProducts:
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_get_one_notfound(
self,
client,
mocker,
mock_session,
mock_user,
):
mock_result = None
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
mock = mocker.patch.object(
service,
'get_one',
@@ -128,6 +146,11 @@ class TestProducts:
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_get_one_unauthorized(
self,
@@ -152,6 +175,7 @@ class TestProducts:
client,
mocker,
mock_session,
mock_user,
):
product_body = product_factory.product_body_factory(
name='test product create')
@@ -160,6 +184,11 @@ class TestProducts:
product_result = product_factory.product_public_factory(
name='test product create')
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
mock = mocker.patch.object(
service,
'create_one',
@@ -175,6 +204,11 @@ class TestProducts:
mock_session,
product_create
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
product=product_create
)
def test_create_one_unauthorized(
self,
@@ -201,6 +235,7 @@ class TestProducts:
client,
mocker,
mock_session,
mock_user,
):
product_body = product_factory.product_body_factory(
name='test product update'
@@ -212,6 +247,11 @@ class TestProducts:
name='test product update'
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
mock = mocker.patch.object(
service,
'update_one',
@@ -229,11 +269,18 @@ class TestProducts:
product_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_update_one_notfound(
self,
client,
mocker,
mock_session,
mock_user,
):
product_body = product_factory.product_body_factory(
name='test product update'
@@ -242,6 +289,11 @@ class TestProducts:
name='test product update'
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
mock = mocker.patch.object(
service,
'update_one',
@@ -256,6 +308,11 @@ class TestProducts:
2,
product_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_update_one_unauthorized(
self,
@@ -282,6 +339,7 @@ class TestProducts:
client,
mocker,
mock_session,
mock_user,
):
product_result = product_factory.product_public_factory(
name='test product delete')
@@ -292,6 +350,11 @@ class TestProducts:
return_value=product_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.delete('/api/products/2')
response_data = response.json()
@@ -301,12 +364,18 @@ class TestProducts:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_delete_one_notfound(
self,
client,
mocker,
mock_session,
mock_user,
):
mock = mocker.patch.object(
service,
@@ -314,6 +383,11 @@ class TestProducts:
side_effect=exceptions.ProductNotFoundError('Product not found')
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.delete('/api/products/2')
assert response.status_code == 404
@@ -322,11 +396,17 @@ class TestProducts:
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_delete_one_unauthorized(
self,
client,
mocker,
):
self,
client,
mocker,
):
def unauthorized():
raise HTTPException(status_code=401)
app.dependency_overrides[get_current_user] = unauthorized

View File

@@ -92,6 +92,7 @@ class TestShipments:
client,
mocker,
mock_session,
mock_user,
):
mock_result = shipment_factory.shipment_public_factory(
name="test 2", id=2)
@@ -101,6 +102,11 @@ class TestShipments:
'get_one',
return_value=mock_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.get('/api/shipments/2')
response_data = response.json()
@@ -111,12 +117,18 @@ class TestShipments:
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_get_one_notfound(
self,
client,
mocker,
mock_session,
mock_user,
):
mock_result = None
mock = mocker.patch.object(
@@ -124,12 +136,22 @@ class TestShipments:
'get_one',
return_value=mock_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.get('/api/shipments/2')
assert response.status_code == 404
mock.assert_called_once_with(
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_get_one_unauthorized(
self,
@@ -154,7 +176,8 @@ class TestShipments:
client,
mocker,
mock_session,
):
mock_user,
):
shipment_body = shipment_factory.shipment_body_factory(
name='test shipment create'
)
@@ -170,6 +193,11 @@ class TestShipments:
'create_one',
return_value=shipment_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.post('/api/shipments', json=shipment_body)
response_data = response.json()
@@ -180,6 +208,11 @@ class TestShipments:
mock_session,
shipment_create
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
shipment=shipment_create
)
def test_create_one_unauthorized(
self,
@@ -207,6 +240,7 @@ class TestShipments:
client,
mocker,
mock_session,
mock_user,
):
shipment_body = shipment_factory.shipment_body_factory(
name='test shipment update'
@@ -223,6 +257,11 @@ class TestShipments:
'update_one',
return_value=shipment_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.put('/api/shipments/2', json=shipment_body)
response_data = response.json()
@@ -234,12 +273,18 @@ class TestShipments:
2,
shipment_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_update_one_notfound(
self,
client,
mocker,
mock_session,
mock_user,
):
shipment_body = shipment_factory.shipment_body_factory(
name='test shipment update'
@@ -249,8 +294,17 @@ class TestShipments:
)
mock = mocker.patch.object(
service, 'update_one', side_effect=exceptions.ShipmentNotFoundError(
messages.Messages.not_found('shipment')))
service,
'update_one',
side_effect=exceptions.ShipmentNotFoundError(
messages.Messages.not_found('shipment')
)
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.put('/api/shipments/2', json=shipment_body)
@@ -260,6 +314,11 @@ class TestShipments:
2,
shipment_update
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_update_one_unauthorized(
self,
@@ -287,6 +346,7 @@ class TestShipments:
client,
mocker,
mock_session,
mock_user,
):
shipment_result = shipment_factory.shipment_public_factory(
name='test shipment delete'
@@ -297,6 +357,11 @@ class TestShipments:
'delete_one',
return_value=shipment_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.delete('/api/shipments/2')
response_data = response.json()
@@ -307,12 +372,18 @@ class TestShipments:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_delete_one_notfound(
self,
client,
mocker,
mock_session,
mock_user,
):
mock = mocker.patch.object(
service,
@@ -321,6 +392,11 @@ class TestShipments:
messages.Messages.not_found('shipment')
)
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.delete('/api/shipments/2')
@@ -329,6 +405,11 @@ class TestShipments:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_session,
mock_user,
_id=2
)
def test_delete_one_unauthorized(
self,

View File

@@ -2,13 +2,18 @@ import src.users.exceptions as exceptions
import src.users.service as service
import tests.factories.users as user_factory
from fastapi.exceptions import HTTPException
from src import models
from src.auth.auth import get_current_user
from src.main import app
class TestUsers:
def test_get_all(self, client, mocker, mock_session, mock_user):
def test_get_all(
self,
client,
mocker,
mock_session,
mock_user,
):
mock_results = [
user_factory.user_public_factory(name="test 1", id=1),
user_factory.user_public_factory(name="test 2", id=2),
@@ -30,8 +35,15 @@ class TestUsers:
[],
[],
)
assert mock_user
def test_get_all_filters(self, client, mocker, mock_session, mock_user):
def test_get_all_filters(
self,
client,
mocker,
mock_session,
mock_user,
):
mock_results = [
user_factory.user_public_factory(name="test 2", id=2),
]
@@ -40,7 +52,6 @@ class TestUsers:
'get_all',
return_value=mock_results
)
response = client.get('/api/users?emails=test@test.test&names=test 2')
response_data = response.json()
assert response.status_code == 200
@@ -51,13 +62,13 @@ class TestUsers:
['test 2'],
['test@test.test'],
)
assert mock_user
def test_get_all_unauthorized(
self,
client,
mocker,
mock_session,
mock_user):
self,
client,
mocker,
):
def unauthorized():
raise HTTPException(status_code=401)
@@ -71,7 +82,13 @@ class TestUsers:
app.dependency_overrides.clear()
def test_get_one(self, client, mocker, mock_session, mock_user):
def test_get_one(
self,
client,
mocker,
mock_session,
mock_user,
):
mock_result = user_factory.user_public_factory(name="test 2", id=2)
mock = mocker.patch.object(
@@ -79,6 +96,11 @@ class TestUsers:
'get_one',
return_value=mock_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.get('/api/users/2')
response_data = response.json()
@@ -89,28 +111,43 @@ class TestUsers:
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_user
)
def test_get_one_notfound(self, client, mocker, mock_session, mock_user):
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
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.get('/api/users/2')
response_data = response.json()
assert response.status_code == 404
mock.assert_called_once_with(
mock_session,
2
)
mock_is_allowed.assert_called_once_with(
mock_user
)
def test_get_one_unauthorized(
self,
client,
mocker,
mock_session,
mock_user):
self,
client,
mocker,
):
def unauthorized():
raise HTTPException(status_code=401)
@@ -124,7 +161,13 @@ class TestUsers:
app.dependency_overrides.clear()
def test_create_one(self, client, mocker, mock_session, mock_user):
def test_create_one(
self,
client,
mocker,
mock_session,
mock_user,
):
user_body = user_factory.user_body_factory(name='test user create')
user_create = user_factory.user_create_factory(name='test user create')
user_result = user_factory.user_public_factory(name='test user create')
@@ -134,6 +177,11 @@ class TestUsers:
'create_one',
return_value=user_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.post('/api/users', json=user_body)
response_data = response.json()
@@ -144,13 +192,15 @@ class TestUsers:
mock_session,
user_create
)
mock_is_allowed.assert_called_once_with(
mock_user
)
def test_create_one_unauthorized(
self,
client,
mocker,
mock_session,
mock_user):
self,
client,
mocker,
):
def unauthorized():
raise HTTPException(status_code=401)
user_body = user_factory.user_body_factory(name='test user create')
@@ -165,7 +215,13 @@ class TestUsers:
app.dependency_overrides.clear()
def test_update_one(self, client, mocker, mock_session, mock_user):
def test_update_one(
self,
client,
mocker,
mock_session,
mock_user,
):
user_body = user_factory.user_body_factory(name='test user update')
user_update = user_factory.user_update_factory(name='test user update')
user_result = user_factory.user_public_factory(name='test user update')
@@ -175,6 +231,11 @@ class TestUsers:
'update_one',
return_value=user_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.put('/api/users/2', json=user_body)
response_data = response.json()
@@ -186,25 +247,32 @@ class TestUsers:
2,
user_update
)
mock_is_allowed.assert_called_once_with(
mock_user
)
def test_update_one_notfound(
self,
client,
mocker,
mock_session,
mock_user):
self,
client,
mocker,
mock_session,
mock_user,
):
user_body = user_factory.user_body_factory(name='test user update')
user_update = user_factory.user_update_factory(name='test user update')
user_result = None
mock = mocker.patch.object(
service,
'update_one',
side_effect=exceptions.UserNotFoundError('User 2 not found')
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.put('/api/users/2', json=user_body)
response_data = response.json()
assert response.status_code == 404
mock.assert_called_once_with(
@@ -212,13 +280,15 @@ class TestUsers:
2,
user_update
)
mock_is_allowed.assert_called_once_with(
mock_user
)
def test_update_one_unauthorized(
self,
client,
mocker,
mock_session,
mock_user):
self,
client,
mocker,
):
def unauthorized():
raise HTTPException(status_code=401)
user_body = user_factory.user_body_factory(name='test user update')
@@ -233,7 +303,13 @@ class TestUsers:
app.dependency_overrides.clear()
def test_delete_one(self, client, mocker, mock_session, mock_user):
def test_delete_one(
self,
client,
mocker,
mock_session,
mock_user,
):
user_result = user_factory.user_public_factory(name='test user delete')
mock = mocker.patch.object(
@@ -241,6 +317,11 @@ class TestUsers:
'delete_one',
return_value=user_result
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.delete('/api/users/2')
response_data = response.json()
@@ -251,40 +332,46 @@ class TestUsers:
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_user
)
def test_delete_one_notfound(
self,
client,
mocker,
mock_session,
mock_user):
user_result = None
self,
client,
mocker,
mock_session,
mock_user,
):
mock = mocker.patch.object(
service,
'delete_one',
side_effect=exceptions.UserNotFoundError('User 2 not found')
)
mock_is_allowed = mocker.patch.object(
service,
'is_allowed',
return_value=True
)
response = client.delete('/api/users/2')
response_data = response.json()
assert response.status_code == 404
mock.assert_called_once_with(
mock_session,
2,
)
mock_is_allowed.assert_called_once_with(
mock_user
)
def test_delete_one_unauthorized(
self,
client,
mocker,
mock_session,
mock_user):
self,
client,
mocker,
):
def unauthorized():
raise HTTPException(status_code=401)
user_body = user_factory.user_body_factory(name='test user delete')
app.dependency_overrides[get_current_user] = unauthorized
mock = mocker.patch('src.users.service.delete_one')