Handle unknown item types while loading bee files

Just in case we add new item types in future versions
This commit is contained in:
Rebecca Breu 2021-09-01 15:47:55 +02:00
parent 53777bc346
commit e35a6e5390
2 changed files with 16 additions and 1 deletions

View file

@ -412,7 +412,13 @@ class BeeGraphicsScene(QtWidgets.QGraphicsScene):
while not self.items_to_add.empty():
data, selected = self.items_to_add.get()
cls = item_registry[data.pop('type')]
typ = data.pop('type')
cls = item_registry.get(typ)
if not cls:
# Just in case we add new item types in future versions
logger.warning(f'Encountered item of unknown type: {typ}')
cls = item_registry.get('text')
data['data'] = {'text': f'Item of unknown type: {typ}'}
item = cls.create_from_data(**data)
item.update_from_data(**data)
self.addItem(item)

View file

@ -1056,3 +1056,12 @@ def test_add_queued_items_selected(view):
def test_add_queued_items_when_no_items(view):
view.scene.add_queued_items()
assert view.scene.items() == []
def test_add_queued_items_ignores_unknown_type(view):
data = {'type': 'foo', 'z': 0.33, 'data': {'bar': 'baz'}}
view.scene.add_item_later(data, selected=False)
view.scene.add_queued_items()
assert len(view.scene.items()) == 1
item = view.scene.items()[0]
assert item.toPlainText() == 'Item of unknown type: foo'