def setUp(self): db_mngr = MagicMock() db_mngr.get_value.side_effect = lambda db_map, item_type, id_, field, role: id_ db_mngr.get_item.side_effect = lambda db_map, item_type, id_: { "name": id_, "parameter_name": id_ } mock_db_map = Mock() mock_db_map.codename = "codename" db_mngr.undo_action.__getitem__.side_effect = lambda key: QAction() db_mngr.redo_action.__getitem__.side_effect = lambda key: QAction() with patch.object(SpineDBEditor, "restore_ui"): tabular_view = SpineDBEditor(db_mngr, mock_db_map) self._model = ParameterValuePivotTableModel(tabular_view) data = { ('object1', 'parameter1', 'alternative1'): '1', ('object2', 'parameter1', 'alternative1'): '3', ('object1', 'parameter2', 'alternative1'): '5', ('object2', 'parameter2', 'alternative1'): '7', } tabular_view.load_parameter_value_data = lambda: data object_class_ids = {'object_class': 1} self._model.call_reset_model(object_class_ids) self._model.start_fetching()
def _make_pivot_proxy_model(): """Returns a prefilled PivotTableModel.""" db_mngr = MagicMock() db_mngr.get_value.side_effect = lambda db_map, item_type, id_, role: from_database( id_) mock_db_map = MagicMock() mock_db_map.codename = "codename" db_mngr.undo_action.__getitem__.side_effect = lambda key: QAction() db_mngr.redo_action.__getitem__.side_effect = lambda key: QAction() with patch.object(SpineDBEditor, "restore_ui"), patch.object(SpineDBEditor, "show"): spine_db_editor = SpineDBEditor(db_mngr, mock_db_map) spine_db_editor.create_header_widget = lambda *args, **kwargs: None simple_map = Map(["a", "b"], [-1.1, -2.2]) nested_map = Map( ["a", "b"], [ Map([DateTime("2020-11-13T11:00"), DateTime("2020-11-13T12:00")], [-1.1, -2.2]), Map([DateTime("2020-11-13T11:00"), DateTime("2020-11-13T12:00")], [-3.3, -4.4]), ], ) nested_map_with_time_series = Map( ["a", "b"], [ Map( [DateTime("2020-11-13T11:00"), DateTime("2020-11-13T12:00")], [ TimeSeriesVariableResolution( ["2020-11-13T11:00", "2020-11-13T12:00"], [-1.1, -2.2], False, False), TimeSeriesVariableResolution( ["2020-11-13T12:00", "2020-11-13T13:00"], [-3.3, -4.4], False, False), ], ), Map( [DateTime("2020-11-13T11:00"), DateTime("2020-11-13T12:00")], [ TimeSeriesVariableResolution( ["2020-11-13T11:00", "2020-11-13T12:00"], [-5.5, -6.6], False, False), TimeSeriesVariableResolution( ["2020-11-13T12:00", "2020-11-13T13:00"], [-7.7, -8.8], False, False), ], ), ], ) data = { ('1', 'int_col', 'base_alternative'): '-3', ('2', 'int_col', 'base_alternative'): '-1', ('3', 'int_col', 'base_alternative'): '2', ('1', 'float_col', 'base_alternative'): '1.1', ('2', 'float_col', 'base_alternative'): '1.2', ('3', 'float_col', 'base_alternative'): '1.3', ( '1', 'time_series_col', 'base_alternative', ): '{"type": "time_series", "data": {"2019-07-10T13:00": 2.3, "2019-07-10T13:20": 5.0}}', ( '2', 'time_series_col', 'base_alternative', ): '{"type": "time_series", "index": {"start": "2019-07-10T13:00", "resolution": "20 minutes"}, "data": [3.3, 4.0]}', ( '3', 'time_series_col', 'base_alternative', ): '{"type": "time_series", "data": {"2019-07-10T13:00": 4.3, "2019-07-10T13:20": 3.0}}', ("1", "map_col", "base_alternative"): to_database(simple_map), ("2", "map_col", "base_alternative"): to_database(nested_map), ("3", "map_col", "base_alternative"): to_database(nested_map_with_time_series), } data = { tuple((db, k) for k in key) + (db, ): (db, value) for key, value in data.items() } spine_db_editor.load_parameter_value_data = lambda: data spine_db_editor.pivot_table_model = model = ParameterValuePivotTableModel( spine_db_editor) with patch.object( SpineDBEditor, "current_object_class_ids", new_callable=PropertyMock) as mock_current_object_class_ids: mock_current_object_class_ids.return_value = {"object": {db: 1}} model.call_reset_model(pivot=(['object'], ['parameter', 'alternative'], ['database'], (db, ))) model.start_fetching() spine_db_editor.pivot_table_model = model spine_db_editor.pivot_table_proxy.setSourceModel(model) return spine_db_editor.pivot_table_proxy