def test_widget_base_container_remove_child_removes_child():
    fake_parent = BaseContainer(id='id')
    b_elem = BaseContainer(id='id2', parent=fake_parent)
    assert len(fake_parent.children) == 1 and fake_parent.children[0] is b_elem
    fake_parent.remove_child(b_elem)
    assert len(
        fake_parent.children
    ) == 0, "BaseContainer.remove_child should remove child from BaseContainer.children."
def test_widget_base_container_remove_child_dispatches_remove():
    view_test = FakeDispatchView({'name': 'remove', 'selector': '#id'})
    fake_parent = BaseContainer(id='id')

    b_elem = BaseElement(id='id')

    fake_parent.add_child(b_elem)
    fake_parent.view = view_test
    fake_parent.remove_child(b_elem)
    view_test.verify()
def test_widget_base_container_remove_child_unsets_parent():
    fake_parent = BaseContainer(id='id')
    b_elem = BaseContainer(id='id2', parent=fake_parent)
    assert b_elem.parent is fake_parent
    fake_parent.remove_child(b_elem)
    assert b_elem.parent is None, "BaseContainer.remove_child should reset the child's parent to None."