conftest.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import pytest
  2. import factory
  3. from collections import namedtuple
  4. from wtforms import Form, fields
  5. from werkzeug.datastructures import ImmutableMultiDict
  6. from pydantic_form import PydanticForm
  7. from pydantic import BaseModel
  8. ScenarioClasses = namedtuple("ScenarioClasses", ['wtf_form', 'pydantic_form', 'schema', 'data_factory'])
  9. ScenarioInstances = namedtuple("ScenarioInstances", ['wtf_form', 'pydantic_form', 'formdata', 'data'])
  10. class SimpleSchema(BaseModel):
  11. integer: int
  12. string: str
  13. class SimpleWTForm(Form):
  14. _schema = SimpleSchema
  15. integer = fields.IntegerField()
  16. string = fields.StringField()
  17. class SimpleForm(SimpleWTForm, PydanticForm):
  18. _schema = SimpleSchema
  19. class SimpleFormDataFactory(factory.Factory):
  20. class Meta:
  21. model = dict
  22. integer = factory.Faker('pyint')
  23. string = factory.Faker('pystr')
  24. @pytest.fixture(scope="session")
  25. def scenario_classes_simple():
  26. return ScenarioClasses(SimpleWTForm, SimpleForm, SimpleSchema, SimpleFormDataFactory)
  27. @pytest.fixture(scope="session")
  28. def instance_factory():
  29. def _factory(scenario_classes):
  30. data = scenario_classes.data_factory()
  31. return ScenarioInstances(
  32. scenario_classes.wtf_form(data=data),
  33. scenario_classes.pydantic_form(data=data),
  34. ImmutableMultiDict(data),
  35. data
  36. )
  37. return _factory
  38. @pytest.fixture(scope="session")
  39. def scenario_instance_simple(instance_factory, scenario_classes_simple):
  40. return instance_factory(scenario_classes_simple)