123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import pytest
- from reflex.components.props import NoExtrasAllowedProps
- from reflex.utils.exceptions import InvalidPropValueError
- try:
- from pydantic.v1 import ValidationError
- except ModuleNotFoundError:
- from pydantic import ValidationError
- class PropA(NoExtrasAllowedProps):
- """Base prop class."""
- foo: str
- bar: str
- class PropB(NoExtrasAllowedProps):
- """Prop class with nested props."""
- foobar: str
- foobaz: PropA
- @pytest.mark.parametrize(
- "props_class, kwargs, should_raise",
- [
- (PropA, {"foo": "value", "bar": "another_value"}, False),
- (PropA, {"fooz": "value", "bar": "another_value"}, True),
- (
- PropB,
- {
- "foobaz": {"foo": "value", "bar": "another_value"},
- "foobar": "foo_bar_value",
- },
- False,
- ),
- (
- PropB,
- {
- "fooba": {"foo": "value", "bar": "another_value"},
- "foobar": "foo_bar_value",
- },
- True,
- ),
- (
- PropB,
- {
- "foobaz": {"foobar": "value", "bar": "another_value"},
- "foobar": "foo_bar_value",
- },
- True,
- ),
- ],
- )
- def test_no_extras_allowed_props(props_class, kwargs, should_raise):
- if should_raise:
- with pytest.raises((ValidationError, InvalidPropValueError)):
- props_class(**kwargs)
- else:
- props_instance = props_class(**kwargs)
- assert isinstance(props_instance, props_class)
|