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()
Esempio n. 2
0
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