test_translator.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import pytest
  2. from pydantic_form.translator import SchemaInstanceToFormDataField, SchemaToForm
  3. @pytest.mark.parametrize('translator', [SchemaInstanceToFormDataField])
  4. @pytest.mark.parametrize(
  5. 'scenario_name',
  6. ['scenario_classes_simple', 'scenario_classes_nested']
  7. )
  8. def test_data_translator(request, scenario_name, translator):
  9. scenario = request.getfixturevalue(scenario_name)
  10. data = scenario.data_factory()
  11. schema = scenario.schema(**data)
  12. form = scenario.wtf_form()
  13. keys = scenario.keys
  14. t = translator(schema, form)
  15. for k in keys:
  16. t(k)
  17. assert schema.dict() == form.data
  18. @pytest.mark.skip
  19. @pytest.mark.parametrize('translator', [SchemaInstanceToFormDataField])
  20. @pytest.mark.parametrize(
  21. 'scenario_name',
  22. ['scenario_classes_simple', 'scenario_classes_nested']
  23. )
  24. def test_error_translator_bad(request, scenario_name, translator):
  25. scenario = request.getfixturevalue(scenario_name)
  26. data = scenario.data_factory()
  27. schema = scenario.schema(**data)
  28. form = scenario.wtf_form()
  29. keys = scenario.keys
  30. t = translator(schema, form)
  31. for k in keys:
  32. t(k)
  33. assert schema.dict() == form.data
  34. @pytest.mark.parametrize('translator', [SchemaToForm])
  35. @pytest.mark.parametrize('data_factory_name', ['data_factory', 'bad_data_factory'])
  36. @pytest.mark.parametrize(
  37. 'scenario_name',
  38. ['scenario_classes_simple', 'scenario_classes_nested']
  39. )
  40. def test_translator(request, scenario_name, translator, data_factory_name):
  41. scenario = request.getfixturevalue(scenario_name)
  42. data = getattr(scenario, data_factory_name)()
  43. schema = scenario.schema(**data)
  44. form = scenario.wtf_form()
  45. keys = scenario.keys
  46. t = SchemaToForm(schema, form, keys)
  47. t()
  48. assert schema.dict() == form.data