159 lines
5.2 KiB
Python
159 lines
5.2 KiB
Python
import pytest
|
|
import src.forms.exceptions as forms_exceptions
|
|
import src.forms.service as forms_service
|
|
import tests.factories.forms as forms_factory
|
|
from sqlmodel import Session
|
|
from src import models
|
|
|
|
|
|
class TestFormsService:
|
|
def test_get_all_forms(self, session: Session,
|
|
forms: list[models.FormPublic]):
|
|
result = forms_service.get_all(session, [], [], False)
|
|
|
|
assert len(result) == 2
|
|
assert result == forms
|
|
|
|
def test_get_all_forms_filter_productors(
|
|
self, session: Session, forms: list[models.FormPublic]):
|
|
result = forms_service.get_all(session, [], ['test productor'], False)
|
|
|
|
assert len(result) == 2
|
|
assert result == forms
|
|
|
|
def test_get_all_forms_filter_season(
|
|
self, session: Session, forms: list[models.FormPublic]):
|
|
result = forms_service.get_all(session, ['test season 1'], [], False)
|
|
|
|
assert len(result) == 1
|
|
|
|
def test_get_all_forms_all_filters(
|
|
self, session: Session, forms: list[models.FormPublic]):
|
|
result = forms_service.get_all(
|
|
session, ['test season 1'], ['test productor'], True)
|
|
|
|
assert result == forms
|
|
|
|
def test_get_one_form(self, session: Session,
|
|
forms: list[models.FormPublic]):
|
|
result = forms_service.get_one(session, forms[0].id)
|
|
|
|
assert result == forms[0]
|
|
|
|
def test_get_one_form_notfound(self, session: Session):
|
|
result = forms_service.get_one(session, 122)
|
|
|
|
assert result is None
|
|
|
|
def test_create_form(
|
|
self,
|
|
session: Session,
|
|
productor: models.ProductorPublic,
|
|
referer: models.ProductorPublic
|
|
):
|
|
form_create = forms_factory.form_create_factory(
|
|
name="new test form",
|
|
productor_id=productor.id,
|
|
referer=referer.id,
|
|
season="new test season",
|
|
)
|
|
result = forms_service.create_one(session, form_create)
|
|
|
|
assert result.id is not None
|
|
assert result.name == "new test form"
|
|
assert result.productor.name == "test productor"
|
|
|
|
def test_create_form_invalidinput(
|
|
self,
|
|
session: Session,
|
|
productor: models.Productor
|
|
):
|
|
form_create = None
|
|
with pytest.raises(forms_exceptions.FormCreateError):
|
|
result = forms_service.create_one(session, form_create)
|
|
|
|
form_create = forms_factory.form_create_factory(productor_id=123)
|
|
with pytest.raises(forms_exceptions.ProductorNotFoundError):
|
|
result = forms_service.create_one(session, form_create)
|
|
|
|
form_create = forms_factory.form_create_factory(
|
|
productor_id=productor.id,
|
|
referer_id=123
|
|
)
|
|
with pytest.raises(forms_exceptions.UserNotFoundError):
|
|
result = forms_service.create_one(session, form_create)
|
|
|
|
def test_update_form(
|
|
self,
|
|
session: Session,
|
|
productor: models.ProductorPublic,
|
|
referer: models.ProductorPublic,
|
|
forms: list[models.FormPublic]
|
|
):
|
|
form_update = forms_factory.form_update_factory(
|
|
name='updated test form',
|
|
productor_id=productor.id,
|
|
referer_id=referer.id,
|
|
season='updated test season'
|
|
)
|
|
form_id = forms[0].id
|
|
result = forms_service.update_one(session, form_id, form_update)
|
|
|
|
assert result.id == form_id
|
|
assert result.name == 'updated test form'
|
|
assert result.season == 'updated test season'
|
|
|
|
def test_update_form_notfound(
|
|
self,
|
|
session: Session,
|
|
productor: models.ProductorPublic,
|
|
referer: models.ProductorPublic,
|
|
):
|
|
form_update = forms_factory.form_update_factory(
|
|
name='updated test form',
|
|
productor_id=productor.id,
|
|
referer_id=referer.id,
|
|
season='updated test season'
|
|
)
|
|
form_id = 123
|
|
with pytest.raises(forms_exceptions.FormNotFoundError):
|
|
result = forms_service.update_one(session, form_id, form_update)
|
|
|
|
def test_update_form_invalidinput(
|
|
self,
|
|
session: Session,
|
|
productor: models.ProductorPublic,
|
|
forms: list[models.FormPublic]
|
|
):
|
|
form_id = forms[0].id
|
|
form_update = forms_factory.form_update_factory(productor_id=123)
|
|
with pytest.raises(forms_exceptions.ProductorNotFoundError):
|
|
result = forms_service.update_one(session, form_id, form_update)
|
|
|
|
form_update = forms_factory.form_update_factory(
|
|
productor_id=productor.id,
|
|
referer_id=123
|
|
)
|
|
with pytest.raises(forms_exceptions.UserNotFoundError):
|
|
result = forms_service.update_one(session, form_id, form_update)
|
|
|
|
def test_delete_form(
|
|
self,
|
|
session: Session,
|
|
forms: list[models.FormPublic]
|
|
):
|
|
form_id = forms[0].id
|
|
result = forms_service.delete_one(session, form_id)
|
|
|
|
check = forms_service.get_one(session, form_id)
|
|
assert check is None
|
|
|
|
def test_delete_form_notfound(
|
|
self,
|
|
session: Session,
|
|
forms: list[models.FormPublic]
|
|
):
|
|
form_id = 123
|
|
with pytest.raises(forms_exceptions.FormNotFoundError):
|
|
result = forms_service.delete_one(session, form_id)
|