add partial contract tests
Some checks failed
Deploy Amap / deploy (push) Failing after 44s

This commit is contained in:
Julien Aldon
2026-03-02 11:45:05 +01:00
parent 4a4c1225dc
commit 5dd9e19877
6 changed files with 122 additions and 94 deletions

View File

@@ -0,0 +1,59 @@
import src.models as models
import tests.factories.contracts as contract_factory
import tests.factories.products as product_factory
def contract_product_factory(**kwargs):
contract = contract_factory.contract_factory(id=1)
product = product_factory.product_public_factory(id=1, type=models.ProductType.RECCURENT)
data = dict(
product_id=1,
shipment_id=1,
quantity=1,
contract_id=1,
product=product,
contract=contract
)
data.update(kwargs)
return models.ContractProduct(**data)
def contract_product_public_factory(**kwargs):
contract = contract_factory.contract_factory(id=1)
product = product_factory.product_public_factory(id=1)
data = dict(
id=1,
product_id=1,
shipment_id=None,
contract=contract,
product=product,
shipment=None,
quantity=1
)
data.update(kwargs)
return models.ContractProductPublic(**data)
def contract_product_create_factory(**kwargs):
data = dict(
product_id=1,
shipment_id=1,
quantity=1,
)
data.update(kwargs)
return models.ContractProductCreate(**data)
def contract_product_update_factory(**kwargs):
data = dict(
product_id=1,
shipment_id=1,
quantity=1,
)
data.update(kwargs)
return models.ContractProductUpdate(**data)
def contract_product_body_factory(**kwargs):
data = dict(
product_id=1,
shipment_id=1,
quantity=1,
)
data.update(kwargs)
return data

View File

@@ -3,6 +3,7 @@ from .forms import form_factory
def contract_factory(**kwargs):
data = dict(
id=1,
firstname="test",
lastname="test",
email="test@test.test",
@@ -67,6 +68,9 @@ def contract_body_factory(**kwargs):
phone="00000000",
payment_method="cheque",
cheque_quantity=1,
products=[],
cheques=[],
form_id=1
)
data.update(kwargs)
return data

View File

@@ -7,10 +7,10 @@ import datetime
def form_factory(**kwargs):
data = dict(
id=1,
name="form 1",
name='form 1',
productor_id=1,
referer_id=1,
season="hiver-2026",
season='hiver-2026',
start=datetime.date(2025, 10, 10),
end=datetime.date(2025, 10, 10),
minimum_shipment_value=0,
@@ -25,12 +25,12 @@ def form_factory(**kwargs):
def form_body_factory(**kwargs):
data = dict(
name="form 1",
name='form 1',
productor_id=1,
referer_id=1,
season="hiver-2026",
start="2025-10-10",
end="2025-10-10",
season='hiver-2026',
start='2025-10-10',
end='2025-10-10',
minimum_shipment_value=0,
visible=True
)
@@ -39,10 +39,10 @@ def form_body_factory(**kwargs):
def form_create_factory(**kwargs):
data = dict(
name="form 1",
name='form 1',
productor_id=1,
referer_id=1,
season="hiver-2026",
season='hiver-2026',
start=datetime.date(2025, 10, 10),
end=datetime.date(2025, 10, 10),
minimum_shipment_value=0,
@@ -53,10 +53,10 @@ def form_create_factory(**kwargs):
def form_update_factory(**kwargs):
data = dict(
name="form 1",
name='form 1',
productor_id=1,
referer_id=1,
season="hiver-2026",
season='hiver-2026',
start=datetime.date(2025, 10, 10),
end=datetime.date(2025, 10, 10),
minimum_shipment_value=0,
@@ -68,10 +68,10 @@ def form_update_factory(**kwargs):
def form_public_factory(form=None, shipments=[],**kwargs):
data = dict(
id=1,
name="form 1",
name='form 1',
productor_id=1,
referer_id=1,
season="hiver-2026",
season='hiver-2026',
start=datetime.date(2025, 10, 10),
end=datetime.date(2025, 10, 10),
minimum_shipment_value=0,

View File

@@ -3,15 +3,17 @@ import src.models as models
from src.main import app
from src.auth.auth import get_current_user
import tests.factories.contracts as contract_factory
import tests.factories.forms as form_factory
import tests.factories.contract_products as contract_products_factory
from fastapi.exceptions import HTTPException
class TestContracts:
def test_get_all(self, client, mocker, mock_session, mock_user):
mock_results = [
contract_factory.contract_public_factory(name="test 1", id=1),
contract_factory.contract_public_factory(name="test 2", id=2),
contract_factory.contract_public_factory(name="test 3", id=3),
contract_factory.contract_public_factory(id=1),
contract_factory.contract_public_factory(id=2),
contract_factory.contract_public_factory(id=3),
]
mock = mocker.patch.object(
service,
@@ -31,7 +33,7 @@ class TestContracts:
)
def test_get_all_filters(self, client, mocker, mock_session, mock_user):
mock_results = [
contract_factory.contract_public_factory(name="test 2", id=2),
contract_factory.contract_public_factory(id=2),
]
mock = mocker.patch.object(
service,
@@ -65,7 +67,7 @@ class TestContracts:
app.dependency_overrides.clear()
def test_get_one(self, client, mocker, mock_session, mock_user):
mock_result = contract_factory.contract_public_factory(name="test 2", id=2)
mock_result = contract_factory.contract_public_factory(id=2)
mock = mocker.patch.object(
service,
@@ -123,10 +125,42 @@ class TestContracts:
app.dependency_overrides.clear()
def test_create_one(self, client, mocker, mock_session, mock_user):
pass
contract_body = contract_factory.contract_body_factory(
products=[
contract_products_factory.contract_product_body_factory(product_id=1),
contract_products_factory.contract_product_body_factory(product_id=2),
contract_products_factory.contract_product_body_factory(product_id=3)
],
cheques=[{'name': '123123', 'value': '100'}]
)
contract_result = contract_factory.contract_factory(
products=[
contract_products_factory.contract_product_factory(product_id=1),
contract_products_factory.contract_product_factory(product_id=2),
contract_products_factory.contract_product_factory(product_id=3)
],
form=form_factory.form_factory(),
cheques=[models.Cheque(name='123123', value='100')]
)
mock_create_one = mocker.patch.object(
service,
'create_one',
return_value=contract_result
)
mock_add_contract_file = mocker.patch.object(
service,
'add_contract_file',
return_value=True
)
mock_generate_html_contract = mocker.patch('src.contracts.generate_contract.generate_html_contract')
response = client.post('/api/contracts', json=contract_body)
assert response.status_code == 200
contract_id = 'test_test_test type_hiver-2026'
assert response.headers['Content-Disposition'] == f'attachment; filename=contract_{contract_id}.pdf'
def test_delete_one(self, client, mocker, mock_session, mock_user):
contract_result = contract_factory.contract_public_factory(name='test contract delete')
contract_result = contract_factory.contract_public_factory()
mock = mocker.patch.object(
service,
@@ -176,7 +210,7 @@ class TestContracts:
def test_delete_one_unauthorized(self, client, mocker, mock_session, mock_user):
def unauthorized():
raise HTTPException(status_code=401)
contract_body = contract_factory.contract_body_factory(name='test contract delete')
contract_body = contract_factory.contract_body_factory()
app.dependency_overrides[get_current_user] = unauthorized