Skip to content

Commit b39050a

Browse files
authored
Fix Traceback from Scenario Tree (#3247)
2 parents 6409f80 + 4416ea7 commit b39050a

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

spinetoolbox/spine_db_editor/selection_for_filtering.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@ def _update_scenario_selection(self, selected: QItemSelection, deselected: QItem
209209
continue
210210
db_map = parent_index.data(DB_MAP_ROLE)
211211
scenario_id = index.data(ITEM_ID_ROLE)
212+
if scenario_id is None:
213+
continue
212214
selection.setdefault(db_map, set()).add(scenario_id)
213215
if not selection:
214216
selection = Asterisk

tests/spine_db_editor/test_selection_for_filtering.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,3 +592,17 @@ def test_select_scenario(self, db_editor, logger):
592592
mock_signal.emit.assert_not_called()
593593
view.selectionModel().select(model.index(1, 0, scenario_index), QItemSelectionModel.SelectionFlag.Select)
594594
mock_signal.emit.assert_not_called()
595+
596+
def test_selecting_add_new_scenario_item_does_not_affect_selection(self, db_editor, logger):
597+
view = db_editor.ui.scenario_tree_view
598+
model = view.model()
599+
database_index = model.index(0, 0)
600+
assert database_index.data() == "TestScenarioSelectionForFiltering_db"
601+
assert model.rowCount(database_index) == 1
602+
scenario_index = model.index(0, 0, database_index)
603+
assert scenario_index.data() == "Type new scenario name here..."
604+
filter_selection = db_editor._scenario_selection_for_filtering
605+
with mock.patch.object(filter_selection, "scenario_selection_changed") as mock_signal:
606+
mock_signal.emit = mock.MagicMock()
607+
view.selectionModel().select(scenario_index, QItemSelectionModel.SelectionFlag.ClearAndSelect)
608+
mock_signal.emit.assert_not_called()

0 commit comments

Comments
 (0)