"""GithubFlavoredMarkdownTable end to end testing."""

from terminaltables3 import GithubFlavoredMarkdownTable


def test_single_line():
    """Test single-lined cells."""
    table_data = [
        ["Name", "Color", "Type"],
        ["Avocado", "green", "nut"],
        ["Tomato", "red", "fruit"],
        ["Lettuce", "green", "vegetable"],
        ["Watermelon", "green"],
        [],
    ]
    table = GithubFlavoredMarkdownTable(table_data)
    table.inner_footing_row_border = True
    table.justify_columns[0] = "left"
    table.justify_columns[1] = "center"
    table.justify_columns[2] = "right"
    actual = table.table

    expected = (
        "| Name       | Color |      Type |\n"
        "|:-----------|:-----:|----------:|\n"
        "| Avocado    | green |       nut |\n"
        "| Tomato     |  red  |     fruit |\n"
        "| Lettuce    | green | vegetable |\n"
        "| Watermelon | green |           |\n"
        "|            |       |           |"
    )
    assert actual == expected


def test_multi_line():
    """Test multi-lined cells."""
    table_data = [
        ["Show", "Characters"],
        [
            "Rugrats",
            "Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles,\nDil Pickles",
        ],
        ["South Park", "Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick"],
    ]
    table = GithubFlavoredMarkdownTable(table_data)

    # Test defaults.
    actual = table.table
    expected = (
        "| Show       | Characters                                                                          |\n"
        "|------------|-------------------------------------------------------------------------------------|\n"
        "| Rugrats    | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, |\n"
        "|            | Dil Pickles                                                                         |\n"
        "| South Park | Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick                          |"
    )
    assert actual == expected

    # Test inner row border.
    table.inner_row_border = True
    actual = table.table
    expected = (
        "| Show       | Characters                                                                          |\n"
        "|------------|-------------------------------------------------------------------------------------|\n"
        "| Rugrats    | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, |\n"
        "|            | Dil Pickles                                                                         |\n"
        "| South Park | Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick                          |"
    )
    assert actual == expected

    # Justify right.
    table.justify_columns = {1: "right"}
    actual = table.table
    expected = (
        "| Show       |                                                                          Characters |\n"
        "|------------|------------------------------------------------------------------------------------:|\n"
        "| Rugrats    | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, |\n"
        "|            |                                                                         Dil Pickles |\n"
        "| South Park |                          Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick |"
    )
    assert actual == expected
