diff --git a/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py b/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py index 5931d672..10979628 100644 --- a/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +++ b/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py @@ -65,8 +65,10 @@ class DapComboBox(BECWidget, QWidget): """ if self._validate_dap_model(default_fit): self.select_fit_model(default_fit) - else: + elif self._validate_dap_model("GaussianModel"): self.select_fit_model("GaussianModel") + elif self.available_models: + self.select_fit_model(self.available_models[0]) @property def available_models(self): @@ -154,7 +156,8 @@ class DapComboBox(BECWidget, QWidget): def populate_fit_model_combobox(self): """Populate the fit_model_combobox with the devices.""" # pylint: disable=protected-access - self.available_models = [model for model in self.client.dap._available_dap_plugins.keys()] + available_plugins = getattr(getattr(self.client, "dap", None), "_available_dap_plugins", {}) + self.available_models = [model for model in available_plugins.keys()] self.fit_model_combobox.clear() self.fit_model_combobox.addItems(self.available_models) diff --git a/tests/unit_tests/test_dap_combobox.py b/tests/unit_tests/test_dap_combobox.py index 93cdfca0..b4854ff3 100644 --- a/tests/unit_tests/test_dap_combobox.py +++ b/tests/unit_tests/test_dap_combobox.py @@ -71,3 +71,13 @@ def test_dap_combobox_currentTextchanged(dap_combobox): dap_combobox.fit_model_updated.connect(my_callback) dap_combobox.fit_model_combobox.setCurrentText("SineModel") assert container[0] == "SineModel" + + +def test_dap_combobox_init_without_available_models(qtbot, mocked_client): + mocked_client.dap._available_dap_plugins = {} + + widget = create_widget(qtbot, DapComboBox, client=mocked_client) + + assert widget.available_models == [] + assert widget.fit_model_combobox.count() == 0 + assert widget.fit_model_combobox.currentText() == ""