def test_handleItemChanged(self, ws, view, twd):
        item = Mock(spec=WorkbenchTableWidgetItem)
        item.row.return_value = 5
        item.column.return_value = 5
        item.data.return_value = "magic parameter"
        item.is_v3d = False

        twd.handleItemChanged(item)

        item.row.assert_called_once_with()
        item.column.assert_called_once_with()
        ws.setCell.assert_called_once_with(5, 5, "magic parameter", notify_replace=False)
        item.update.assert_called_once_with()
        item.reset.assert_called_once_with()
    def test_handleItemChanged(self, ws, view, twd):
        item = Mock(spec=WorkbenchTableWidgetItem)
        item.row.return_value = 5
        item.column.return_value = 5
        item.data.return_value = "magic parameter"
        item.is_v3d = False

        twd.handleItemChanged(item)

        item.row.assert_called_once_with()
        item.column.assert_called_once_with()
        ws.setCell.assert_called_once_with(5,
                                           5,
                                           "magic parameter",
                                           notify_replace=False)
        item.update.assert_called_once_with()
        item.reset.assert_called_once_with()
    def test_handleItemChanged_raises_ValueError(self, ws, view, twd):
        item = Mock(spec=WorkbenchTableWidgetItem)
        item.row.return_value = 5
        item.column.return_value = 5
        item.data.return_value = "magic parameter"
        item.is_v3d = False

        # setCell will throw an exception as a side effect
        ws.setCell.side_effect = ValueError

        twd.handleItemChanged(item)

        item.row.assert_called_once_with()
        item.column.assert_called_once_with()
        ws.setCell.assert_called_once_with(5, 5, "magic parameter")
        view.show_warning.assert_called_once_with(TableWorkspaceDisplay.ITEM_CHANGED_INVALID_DATA_MESSAGE)
        self.assertNotCalled(item.update)
        item.reset.assert_called_once_with()
    def test_handleItemChanged_raises_ValueError(self, ws, view, twd):
        item = Mock(spec=WorkbenchTableWidgetItem)
        item.row.return_value = 5
        item.column.return_value = 5
        item.data.return_value = "magic parameter"
        item.is_v3d = False

        # setCell will throw an exception as a side effect
        ws.setCell.side_effect = ValueError

        twd.handleItemChanged(item)

        item.row.assert_called_once_with()
        item.column.assert_called_once_with()
        ws.setCell.assert_called_once_with(5, 5, "magic parameter")
        view.show_warning.assert_called_once_with(
            TableWorkspaceDisplay.ITEM_CHANGED_INVALID_DATA_MESSAGE)
        self.assertNotCalled(item.update)
        item.reset.assert_called_once_with()
    def test_handleItemChanged_raises_Exception(self, ws, view, twd):
        item = Mock(spec=WorkbenchTableWidgetItem)

        item.row.return_value = ws.ROWS
        item.column.return_value = ws.COLS
        item.data.return_value = "magic parameter"
        item.is_v3d = False

        # setCell will throw an exception as a side effect
        error_message = "TEST_EXCEPTION_MESSAGE"
        ws.setCell.side_effect = Exception(error_message)

        twd.handleItemChanged(item)

        item.row.assert_called_once_with()
        item.column.assert_called_once_with()
        ws.setCell.assert_called_once_with(ws.ROWS, ws.COLS, "magic parameter")
        view.show_warning.assert_called_once_with(
            TableWorkspaceDisplay.ITEM_CHANGED_UNKNOWN_ERROR_MESSAGE.format(error_message))
        self.assertNotCalled(item.update)
        item.reset.assert_called_once_with()
    def test_handleItemChanged_raises_Exception(self, ws, view, twd):
        item = Mock(spec=WorkbenchTableWidgetItem)

        item.row.return_value = ws.ROWS
        item.column.return_value = ws.COLS
        item.data.return_value = "magic parameter"
        item.is_v3d = False

        # setCell will throw an exception as a side effect
        error_message = "TEST_EXCEPTION_MESSAGE"
        ws.setCell.side_effect = Exception(error_message)

        twd.handleItemChanged(item)

        item.row.assert_called_once_with()
        item.column.assert_called_once_with()
        ws.setCell.assert_called_once_with(ws.ROWS, ws.COLS, "magic parameter")
        view.show_warning.assert_called_once_with(
            TableWorkspaceDisplay.ITEM_CHANGED_UNKNOWN_ERROR_MESSAGE.format(
                error_message))
        self.assertNotCalled(item.update)
        item.reset.assert_called_once_with()