|
| 1 | +from datetime import date, datetime |
| 2 | + |
| 3 | +import param |
| 4 | +import pytest |
| 5 | + |
| 6 | +from bokeh.document import Document |
| 7 | + |
| 8 | +from panel_material_ui.base import MaterialComponent |
| 9 | + |
| 10 | + |
| 11 | +SKIP = {'NumberInput'} |
| 12 | + |
| 13 | +KWARGS = { |
| 14 | + 'DateRangeSlider': dict( |
| 15 | + start=date(2025, 1, 1), end=date(2025, 12, 31), |
| 16 | + value=(date(2025, 1, 1), date(2025, 6, 1)) |
| 17 | + ), |
| 18 | + 'DatetimeRangeSlider': dict( |
| 19 | + start=datetime(2025, 1, 1), end=datetime(2025, 12, 31), |
| 20 | + value=(datetime(2025, 1, 1), datetime(2025, 6, 1)) |
| 21 | + ), |
| 22 | + 'DiscreteSlider': dict(options=[1, 2, 3], value=1), |
| 23 | +} |
| 24 | + |
| 25 | + |
| 26 | +def get_components(): |
| 27 | + descendants = param.concrete_descendents(MaterialComponent) |
| 28 | + return [ |
| 29 | + (name, cls) |
| 30 | + for name, cls in sorted(descendants.items()) |
| 31 | + if not name.startswith('_') and name not in SKIP |
| 32 | + ] |
| 33 | + |
| 34 | + |
| 35 | +@pytest.mark.parametrize("name,cls", get_components(), ids=[c[0] for c in get_components()]) |
| 36 | +def test_component_renders(name, cls): |
| 37 | + kwargs = KWARGS.get(name, {}) |
| 38 | + instance = cls(**kwargs) |
| 39 | + root = instance.get_root(Document()) |
| 40 | + assert root is not None |
0 commit comments