test_iterators.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import pytest
  2. from pydantic_form.iterators import iter_form, iter_schema, iter_form_class
  3. @pytest.fixture
  4. def instance_factory(request):
  5. def _factory(scenario, data):
  6. instances = dict(
  7. schema_class=scenario.schema,
  8. schema=scenario.schema(**data),
  9. form_class=scenario.wtf_form,
  10. form=scenario.wtf_form()
  11. )
  12. return instances[request.param]
  13. return _factory
  14. @pytest.mark.parametrize(
  15. 'scenario',
  16. [
  17. 'scenario_simple',
  18. 'scenario_nested',
  19. 'scenario_double_nested'
  20. ], indirect=True
  21. )
  22. def test_iterators(scenario):
  23. data = scenario.data_factory.valid()
  24. keys = scenario.keys
  25. assert [k for k, _ in iter_form_class(scenario.form)] == keys
  26. form = scenario.form()
  27. assert [k for k, _ in iter_form_class(scenario.form)] == keys
  28. assert [k for k, _ in iter_form(form)] == keys
  29. assert [k for k, _ in iter_schema(scenario.schema)] == keys
  30. schema_instance = scenario.schema(**data)
  31. assert [k for k, _ in iter_schema(schema_instance)] == keys