def METHOD_NAME():
    """
    Test for merging three graphs into one,
    while preserving conflicting node and edge properties.
    """
    graphs = get_graphs()
    # merge while preserving conflicting nodes and edges
    merged_graph = merge_all_graphs(graphs, preserve=True)
    assert merged_graph.number_of_nodes() == 6
    assert merged_graph.number_of_edges() == 6
    assert merged_graph.name == "Graph 2"
    data = merged_graph.nodes()["A"]
    assert data["name"] == "Node A"
    assert data["description"] == "Node A in Graph 2"
    edges = merged_graph.get_edge("B", "A")
    assert len(edges) == 2
    data = list(edges.values())[0]
    assert len(data["provided_by"]) == 2
    assert data["provided_by"] == ["Graph 2", "Graph 1"]
    graphs = get_graphs()
    # merge while not preserving conflicting nodes and edges
    merged_graph = merge_all_graphs(graphs, preserve=False)
    assert merged_graph.number_of_nodes() == 6
    assert merged_graph.number_of_edges() == 6
    assert merged_graph.name == "Graph 2"
    data = merged_graph.nodes()["A"]
    assert data["name"] == "Node A"
    assert data["description"] == "Node A in Graph 2"
    edges = merged_graph.get_edge("B", "A")
    assert len(edges) == 2
    data = list(edges.values())[0]
    assert isinstance(data["provided_by"], list)
    assert "Graph 1" in data["provided_by"]
    assert "Graph 2" in data["provided_by"]