Download tests/test_app.py from Panel-Org/build_feature_input_widget: direct link, hf CLI and curl.
- Browser
- Download file 2.83 kB
-
https://huggingface.co/spaces/Panel-Org/build_feature_input_widget/resolve/main/tests/test_app.py
- Command line
-
hf download hf://spaces/Panel-Org/build_feature_input_widget/tests/test_app.py
-
curl -L -o test_app.py https://huggingface.co/spaces/Panel-Org/build_feature_input_widget/resolve/main/tests/test_app.py
2.83 kB
| """We can provide the user with an option to select list of features and set their values""" | |
| # pylint: disable=redefined-outer-name,missing-function-docstring,protected-access | |
| import pytest | |
| from app import FeatureInput | |
| def features() -> dict: | |
| return { | |
| "A": 1.0, | |
| "B": 2.0, | |
| "C": 3.0, | |
| "D": 4.0, | |
| } | |
| def selected_features(request): | |
| return request.param | |
| def feature_input(features, selected_features): | |
| return FeatureInput(features=features, selected_features=selected_features) | |
| def test_feature_input_constructor(feature_input, features, selected_features): | |
| assert feature_input.selected_features == selected_features | |
| assert feature_input.features == features | |
| assert feature_input.value == {key: features[key] for key in selected_features} | |
| assert [w.name for w in feature_input._selected_widgets] == selected_features | |
| for widget in feature_input._selected_widgets: | |
| assert widget.value == features[widget.name] | |
| def test_can_change_features(feature_input): | |
| features = {"E": 5.0, "F": 6.0} | |
| feature_input.features = features | |
| assert feature_input.selected_features == [] | |
| assert feature_input.value == {} | |
| assert list(feature_input._selected_widgets) == list(feature_input.selected_features) | |
| for feature in feature_input.selected_features: | |
| feature_widget = feature_input._selected_widgets[feature] | |
| assert feature_widget.name == feature | |
| assert feature_widget.value == features[feature] | |
| def test_can_change_value(features): | |
| # Given | |
| widget = FeatureInput(features=features, selected_features=["A"]) | |
| expected = widget.value.copy() | |
| # When update widget for feature A | |
| widget_a = widget._selected_widgets[0] | |
| widget_a.value = 5.0 | |
| # Then | |
| expected["A"] = 5.0 | |
| assert widget.value == expected | |
| def test_can_change_selected_features(feature_input): | |
| # Given | |
| selected_features = feature_input.selected_features.copy() | |
| selected_features.append("D") | |
| # When update widget for feature A | |
| feature_input.selected_features = selected_features | |
| # Then | |
| assert [w.name for w in feature_input._selected_widgets] == selected_features | |
| assert feature_input.value == {w.name: w.value for w in feature_input._selected_widgets} | |
| def test_reset_state(features): | |
| """When a feature is deselected and selected again its value should be the default value""" | |
| widget = FeatureInput(features=features, selected_features=["A"]) | |
| widget._selected_widgets[0].value = features["A"] + 1 | |
| widget.selected_features = [] | |
| assert not widget.value | |
| widget.selected_features = ["A"] | |
| assert widget._selected_widgets[0].value == features["A"] | |
| assert widget.value == {"A": features["A"]} | |