From 16799f2bdee11443ed7a0bd92dcb431fd4051f25 Mon Sep 17 00:00:00 2001 From: Edan Bainglass Date: Sat, 15 Feb 2025 05:30:41 +0000 Subject: [PATCH] Add `AiidaNodeViewWidget` tests --- tests/test_viewers.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/test_viewers.py b/tests/test_viewers.py index adfb176f..e10d655f 100644 --- a/tests/test_viewers.py +++ b/tests/test_viewers.py @@ -313,3 +313,31 @@ def __init__(self, node=None): "Viewer is not an instance of the expected viewer class." ) assert viewer.node == process, "Viewer's node does not match the test process node." + + +def test_node_view_for_non_widget_viewer(): + """Test that a node with no registered viewer is displayed in an output widget""" + import sys + from io import StringIO + + # Intercepting stdout because `ipw.Output` does not + # store outputs in non-interactive environments. + captured = StringIO() + sys.stdout = captured + + node_view = viewers.AiidaNodeViewWidget() + node = orm.Int(1) + node_view.node = node + assert node_view.children[0] is node_view._output + assert str(node) in sys.stdout.getvalue() + + +def test_node_view_caching(): + """Test that providing a given node a second time returns the cached viewer.""" + node_view = viewers.AiidaNodeViewWidget() + node = orm.Int(1) + node_view.node = node + viewer = node_view.children[0] + node_view.node = None + node_view.node = node + assert node_view.children[0] is viewer