8435: Crash when trying to link existing place as an enclosing place using P0001 number; added tests, updated Travis testing
This commit is contained in:
parent
12490b4600
commit
23c023f787
@ -21,5 +21,5 @@ install:
|
||||
|
||||
script:
|
||||
- mkdir -p /home/travis/.gramps/grampsdb/
|
||||
- DJANGO_SETTINGS_MODULE=gramps.webapp.settings nosetests3 --exclude=TestcaseGenerator --exclude=exportvcard_test --exclude=plugins --exclude=vcard --exclude=merge_ref_test --exclude=test_util_test --exclude=gramps.webapp --exclude=test2_exec_CLI --exclude=widgets --exclude=gui --exclude=test3_files_in_import_dir --exclude=test_manual_run gramps
|
||||
- DJANGO_SETTINGS_MODULE=gramps.webapp.settings nosetests3 --exclude=TestcaseGenerator --exclude=exportvcard_test --exclude=plugins --exclude=vcard --exclude=merge_ref_test --exclude=test_util_test --exclude=gramps.webapp --exclude=test2_exec_CLI --exclude=widgets --exclude=test3_files_in_import_dir --exclude=test_manual_run gramps
|
||||
|
||||
|
@ -271,6 +271,7 @@ class EditReference(ManagedWindow, DbGUIElement):
|
||||
if new_id:
|
||||
old_primary = self.db.get_from_name_and_gramps_id(type, new_id)
|
||||
if old_primary:
|
||||
description = None
|
||||
if type == 'Event':
|
||||
msg1 = _("Cannot save event. ID already exists.")
|
||||
description = old_primary.get_description()
|
||||
@ -280,6 +281,8 @@ class EditReference(ManagedWindow, DbGUIElement):
|
||||
elif type == 'Repository':
|
||||
msg1 = _("Cannot save repository. ID already exists.")
|
||||
description = old_primary.get_name()
|
||||
else:
|
||||
msg1 = _("Cannot save item. ID already exists.")
|
||||
if description:
|
||||
msg2 = _("You have attempted to use the existing Gramps "
|
||||
"ID with value %(id)s. This value is already "
|
||||
|
76
gramps/gui/editors/test/test_editreference.py
Normal file
76
gramps/gui/editors/test/test_editreference.py
Normal file
@ -0,0 +1,76 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2013 Doug Blank <doug.blank@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
""" Unittest for editreference.py """
|
||||
|
||||
import unittest
|
||||
import sys
|
||||
try:
|
||||
if sys.version_info < (3,3):
|
||||
from mock import Mock, patch
|
||||
else:
|
||||
from unittest.mock import Mock, patch
|
||||
MOCKING = True
|
||||
except:
|
||||
MOCKING = False
|
||||
|
||||
from gramps.gen.lib import (Person, Family, Event, Source, Place, Citation,
|
||||
Repository, MediaObject, Note, Tag)
|
||||
from gramps.gen.merge.diff import DictionaryDb
|
||||
from gramps.cli.user import User
|
||||
from gramps.gen.dbstate import DbState
|
||||
from gramps.gen.merge.diff import *
|
||||
from gramps.gui.editors.editreference import EditReference
|
||||
|
||||
class MockWindow():
|
||||
def set_transient_for(self, *args, **kwargs):
|
||||
pass
|
||||
def show_all(self):
|
||||
pass
|
||||
|
||||
class MockEditReference(EditReference):
|
||||
def __init__(self, dbstate, uistate, track, source, source_ref, update):
|
||||
self.window = MockWindow()
|
||||
super().__init__(dbstate, uistate, track, source, source_ref, update)
|
||||
|
||||
example = os.path.abspath(
|
||||
os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||
"../../../..",
|
||||
"example/gramps/example.gramps"))
|
||||
|
||||
class TestEditReference(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.db = DictionaryDb()
|
||||
|
||||
@unittest.skipUnless(MOCKING, "Requires unittest.mock to run")
|
||||
def test_editreference(self):
|
||||
dbstate = DbState()
|
||||
dbstate.db = self.db
|
||||
source = Place()
|
||||
source.gramps_id = "P0001"
|
||||
self.db.place_map[source.handle] = source
|
||||
editor = MockEditReference(dbstate, uistate=None, track=[],
|
||||
source=source, source_ref=None, update=None)
|
||||
with patch('gramps.gui.editors.editreference.ErrorDialog') as MockED:
|
||||
editor.check_for_duplicate_id("Place")
|
||||
self.assertTrue(MockED.called)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
Loading…
Reference in New Issue
Block a user