import pytest from pydantic_form.iterators import iter_form, iter_schema, iter_form_class @pytest.fixture def instance_factory(request): def _factory(scenario, data): instances = dict( schema_class=scenario.schema, schema=scenario.schema(**data), form_class=scenario.wtf_form, form=scenario.wtf_form() ) return instances[request.param] return _factory @pytest.mark.parametrize( 'scenario', [ 'scenario_simple', 'scenario_nested', 'scenario_double_nested' ], indirect=True ) def test_iterators(scenario): data = scenario.data_factory.valid() keys = scenario.keys assert [k for k, _ in iter_form_class(scenario.form)] == keys form = scenario.form() assert [k for k, _ in iter_form_class(scenario.form)] == keys assert [k for k, _ in iter_form(form)] == keys assert [k for k, _ in iter_schema(scenario.schema)] == keys schema_instance = scenario.schema(**data) assert [k for k, _ in iter_schema(schema_instance)] == keys