def METHOD_NAME(syn):
    """Test recursive functionality"""
    entity_list = [
        {
            "id": "syn123",
            "concreteType": "org.sagebionetworks.repo.model.Project",
            "name": "parent_folder",
        },
        {
            "id": "syn124",
            "concreteType": "org.sagebionetworks.repo.model.Folder",
            "name": "test_folder",
        },
    ]
    child_list = [
        [
            {"id": "syn2222", "concreteType": "File", "name": "test_file"},
            {
                "id": "syn124",
                "concreteType": "org.sagebionetworks.repo.model.Folder",
                "name": "test_folder",
            },
        ],
        [{"id": "syn22223", "conreteType": "File", "name": "test_file_2"}],
    ]
    expected = [
        (
            ("parent_folder", "syn123"),
            [("test_folder", "syn124")],
            [("test_file", "syn2222")],
        ),
        (
            (os.path.join("parent_folder", "test_folder"), "syn124"),
            [],
            [("test_file_2", "syn22223")],
        ),
    ]
    with patch.object(syn, "get", side_effect=entity_list), patch.object(
        syn, "getChildren", side_effect=child_list
    ):
        result = synapseutils.walk_functions._helpWalk(
            syn=syn, synId="syn123", includeTypes=["folder", "file"]
        )
        # Execute generator
        gen_result = list(result)
    assert gen_result == expected