import pytest from tarot.ui import CubeDisplay from tarot.tarot_api import Tarot import tkinter as tk def test_recursive_binding(): # Mock Tk root and widgets class MockWidget: def __init__(self): self.children = [] self.bindings = {} def bind(self, key, callback): self.bindings[key] = callback def winfo_children(self): return self.children def add_child(self, child): self.children.append(child) # Monkey patch tk original_tk = tk.Tk original_frame = tk.ttk.Frame try: # We don't need to mock everything, just enough to test _bind_recursive cube = Tarot.cube # We can instantiate CubeDisplay without showing it display = CubeDisplay(cube) # Create a mock widget tree parent = MockWidget() child1 = MockWidget() child2 = MockWidget() grandchild = MockWidget() parent.add_child(child1) parent.add_child(child2) child1.add_child(grandchild) # Run recursive binding display._bind_recursive(parent) # Verify bindings assert "" in parent.bindings assert "" in parent.bindings assert "" in child1.bindings assert "" in child1.bindings assert "" in child2.bindings assert "" in child2.bindings assert "" in grandchild.bindings assert "" in grandchild.bindings finally: pass