Compare commits
2 Commits
b4b4fa7643
...
feature/ex
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e970bb683a | ||
|
|
c27c7598b5 |
@@ -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')
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -160,6 +160,7 @@
|
||||
"and/or": "and/or",
|
||||
"form name recommandation": "recommendation: Contract <contract-type> (Example: Pork-Lamb Contract)",
|
||||
"submit contract": "submit contract",
|
||||
"submit": "submit",
|
||||
"example in user forms": "example in user contract form",
|
||||
"occasional product": "occasional product",
|
||||
"recurrent product": "recurrent product",
|
||||
|
||||
@@ -160,6 +160,7 @@
|
||||
"and/or": "et/ou",
|
||||
"form name recommandation": "recommandation : Contrat <contract-type> (Exemple : Contrat Porc-Agneau)",
|
||||
"submit contract": "envoyer le contrat",
|
||||
"submit": "envoyer",
|
||||
"example in user forms": "exemple dans le formulaire à destination des amapiens",
|
||||
"occasional product": "produit occasionnel",
|
||||
"recurrent product": "produit récurrent",
|
||||
|
||||
@@ -53,6 +53,8 @@ export default function FormModal({ opened, onClose, currentForm, handleSubmit }
|
||||
});
|
||||
|
||||
const usersSelect = useMemo(() => {
|
||||
if (!users)
|
||||
return [];
|
||||
return users?.map((user) => ({
|
||||
value: String(user.id),
|
||||
label: `${user.name}`,
|
||||
@@ -60,6 +62,8 @@ export default function FormModal({ opened, onClose, currentForm, handleSubmit }
|
||||
}, [users]);
|
||||
|
||||
const productorsSelect = useMemo(() => {
|
||||
if (!productors)
|
||||
return [];
|
||||
return productors?.map((prod) => ({
|
||||
value: String(prod.id),
|
||||
label: `${prod.name}`,
|
||||
|
||||
@@ -4,9 +4,12 @@ import "./index.css";
|
||||
import { Group, Loader } from "@mantine/core";
|
||||
import { Config } from "@/config/config";
|
||||
import { useAuth } from "@/services/auth/AuthProvider";
|
||||
import { useMediaQuery } from "@mantine/hooks";
|
||||
import { IconHome, IconLogin, IconLogout, IconSettings } from "@tabler/icons-react";
|
||||
|
||||
export function Navbar() {
|
||||
const { loggedUser: user, isLoading } = useAuth();
|
||||
const isPhone = useMediaQuery("(max-width: 760px");
|
||||
|
||||
if (!user && isLoading) {
|
||||
return (
|
||||
@@ -20,11 +23,11 @@ export function Navbar() {
|
||||
<nav>
|
||||
<Group>
|
||||
<NavLink className={"navLink"} aria-label={t("home")} to="/">
|
||||
{t("home", { capfirst: true })}
|
||||
{isPhone ? <IconHome/> : t("home", { capfirst: true })}
|
||||
</NavLink>
|
||||
{user?.logged ? (
|
||||
<NavLink className={"navLink"} aria-label={t("dashboard")} to="/dashboard/help">
|
||||
{t("dashboard", { capfirst: true })}
|
||||
{isPhone ? <IconSettings/> : t("dashboard", { capfirst: true })}
|
||||
</NavLink>
|
||||
) : null}
|
||||
</Group>
|
||||
@@ -34,7 +37,7 @@ export function Navbar() {
|
||||
className={"navLink"}
|
||||
aria-label={t("login with keycloak", { capfirst: true })}
|
||||
>
|
||||
{t("login with keycloak", { capfirst: true })}
|
||||
{isPhone ? <IconLogin/> : t("login with keycloak", { capfirst: true })}
|
||||
</a>
|
||||
) : (
|
||||
<a
|
||||
@@ -42,7 +45,7 @@ export function Navbar() {
|
||||
className={"navLink"}
|
||||
aria-label={t("logout", { capfirst: true })}
|
||||
>
|
||||
{t("logout", { capfirst: true })}
|
||||
{isPhone ? <IconLogout/> : t("logout", { capfirst: true })}
|
||||
</a>
|
||||
)}
|
||||
</nav>
|
||||
|
||||
@@ -59,6 +59,8 @@ export function ProductModal({ opened, onClose, currentProduct, handleSubmit }:
|
||||
});
|
||||
|
||||
const productorsSelect = useMemo(() => {
|
||||
if (!productors)
|
||||
return [];
|
||||
return productors?.map((productor) => ({
|
||||
value: String(productor.id),
|
||||
label: `${productor.name}`,
|
||||
|
||||
@@ -48,6 +48,8 @@ export default function ShipmentModal({
|
||||
const { data: allProductors } = useGetProductors();
|
||||
|
||||
const formsSelect = useMemo(() => {
|
||||
if (!allForms)
|
||||
return [];
|
||||
return allForms?.map((currentForm) => ({
|
||||
value: String(currentForm.id),
|
||||
label: `${currentForm.name} ${currentForm.season}`,
|
||||
@@ -55,7 +57,7 @@ export default function ShipmentModal({
|
||||
}, [allForms]);
|
||||
|
||||
const productsSelect = useMemo(() => {
|
||||
if (!allProducts || !allProductors) return;
|
||||
if (!allProducts || !allProductors) return [];
|
||||
return allProductors?.map((productor) => {
|
||||
return {
|
||||
group: productor.name,
|
||||
|
||||
@@ -36,6 +36,8 @@ export function UserModal({ opened, onClose, currentUser, handleSubmit }: UserMo
|
||||
});
|
||||
|
||||
const roleSelect = useMemo(() => {
|
||||
if (!allRoles)
|
||||
return [];
|
||||
return allRoles?.map((role) => ({ value: String(role.name), label: role.name }));
|
||||
}, [allRoles]);
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ export function Contract() {
|
||||
);
|
||||
|
||||
return (
|
||||
<Stack w={{ base: "100%", md: "80%", lg: "50%" }}>
|
||||
<Stack w={{ base: "100%", md: "80%", lg: "50%" }} p={{base: 'xs'}}>
|
||||
<Title order={2}>{form.name}</Title>
|
||||
<Title order={3}>{t("informations", { capfirst: true })}</Title>
|
||||
<Text size="sm">
|
||||
@@ -283,6 +283,10 @@ export function Contract() {
|
||||
ref={(el) => {
|
||||
inputRefs.current.payment_method = el;
|
||||
}}
|
||||
comboboxProps={{
|
||||
withinPortal: false,
|
||||
position: "bottom-start",
|
||||
}}
|
||||
/>
|
||||
{inputForm.values.payment_method === "cheque" ? (
|
||||
<ContractCheque
|
||||
@@ -319,7 +323,7 @@ export function Contract() {
|
||||
<Button
|
||||
leftSection={<IconDownload/>}
|
||||
aria-label={t("submit contracts")} onClick={handleSubmit}>
|
||||
{t("submit contract", {capfirst: true})}
|
||||
{t("submit", {capfirst: true})}
|
||||
</Button>
|
||||
</Overlay>
|
||||
</Stack>
|
||||
|
||||
@@ -40,12 +40,16 @@ export default function Productors() {
|
||||
}, [navigate, searchParams]);
|
||||
|
||||
const names = useMemo(() => {
|
||||
if (!allProductors)
|
||||
return [];
|
||||
return allProductors
|
||||
?.map((productor: Productor) => productor.name)
|
||||
.filter((season, index, array) => array.indexOf(season) === index);
|
||||
}, [allProductors]);
|
||||
|
||||
const types = useMemo(() => {
|
||||
if (!allProductors)
|
||||
return [];
|
||||
return allProductors
|
||||
?.map((productor: Productor) => productor.type)
|
||||
.filter((productor, index, array) => array.indexOf(productor) === index);
|
||||
|
||||
@@ -38,12 +38,16 @@ export default function Products() {
|
||||
const { data: allProducts } = useGetProducts();
|
||||
|
||||
const names = useMemo(() => {
|
||||
if (!allProducts)
|
||||
return [];
|
||||
return allProducts
|
||||
?.map((product: Product) => product.name)
|
||||
.filter((season, index, array) => array.indexOf(season) === index);
|
||||
}, [allProducts]);
|
||||
|
||||
const productors = useMemo(() => {
|
||||
if (!allProducts)
|
||||
return [];
|
||||
return allProducts
|
||||
?.map((product: Product) => product.productor.name)
|
||||
.filter((productor, index, array) => array.indexOf(productor) === index);
|
||||
|
||||
@@ -44,12 +44,16 @@ export default function Shipments() {
|
||||
const { data: allShipments } = useGetShipments();
|
||||
|
||||
const names = useMemo(() => {
|
||||
if (!allShipments)
|
||||
return [];
|
||||
return allShipments
|
||||
?.map((shipment: Shipment) => shipment.name)
|
||||
.filter((season, index, array) => array.indexOf(season) === index);
|
||||
}, [allShipments]);
|
||||
|
||||
const forms = useMemo(() => {
|
||||
if (!allShipments)
|
||||
return [];
|
||||
return allShipments
|
||||
?.map((shipment: Shipment) => shipment.form.name)
|
||||
.filter((season, index, array) => array.indexOf(season) === index);
|
||||
|
||||
@@ -36,6 +36,8 @@ export default function Users() {
|
||||
const { data: allUsers } = useGetUsers();
|
||||
|
||||
const names = useMemo(() => {
|
||||
if (!allUsers)
|
||||
return [];
|
||||
return allUsers
|
||||
?.map((user: User) => user.name)
|
||||
.filter((season, index, array) => array.indexOf(season) === index);
|
||||
|
||||
Reference in New Issue
Block a user