def test_save_exception(mocker, general_test_customer):
    mock_session = mocker.patch.object(sqlalchemy.orm.Session,
                                       'add',
                                       name="mock_session")
    mock_session.add.side_effect = RuntimeError("Error saving customer")

    base_dao = BaseDao(Customer, mock_session)

    try:
        base_dao.save(general_test_customer)
    except RuntimeError as e:
        assert str(e) == "Error saving customer"
def test_save(mocker, expected_save_result):
    mock_session = mocker.patch.object(sqlalchemy.orm.Session,
                                       'add',
                                       name="mock_session")
    mock_session.add.return_value = expected_save_result

    base_dao = BaseDao(Customer, mock_session)
    _actual_result = base_dao.save(expected_save_result)

    mock_session.add.assert_called_once()

    assert _actual_result is not None
    assert _actual_result.get_identifier(
    ) == expected_save_result.get_identifier()