Exemple #1
0
def test_multiple_validators_for_field():
    p = Path(
        "?a",
        {},
        validators=[
            PerArgValidator("a", lambda x: x > 10),
            PerArgValidator("a", lambda x: x % 3 == 0),
        ],
    )

    assert p.is_valid(None, a=30)

    for val in [6, 13]:
        with pytest.raises(ArgumentError):
            p.is_valid(None, a=val)
Exemple #2
0
def test_optional_args():
    client = Trakt("", "")

    p = Path("calendars/all/shows/new/?start_date/?days", [{"a": str}])

    assert p.methods == ["GET"]
    assert p.args == ["?start_date", "?days"]

    default_alias = "calendars.all.shows.new"

    assert p.aliases == [default_alias]
    assert p.does_match(default_alias)
    assert not p.does_match(default_alias[1:])

    assert p.is_valid(client)
    assert p.get_path_and_qargs() == ("calendars/all/shows/new", {})

    assert p.is_valid(client, start_date="2018-10-10")
    assert p.get_path_and_qargs() == ("calendars/all/shows/new/2018-10-10", {})
Exemple #3
0
def test_get_quargs():
    client = Trakt("", "")
    p = Path("a", {}, filters={"query", "genres"}, extended=["metadata"])

    assert p.is_valid(client, extended=True, query="xyz", genres=["a", "b"])

    _, quargs = p.get_path_and_qargs()

    expected = {"genres": "a,b", "query": "xyz", "extended": "metadata"}

    assert quargs == expected
Exemple #4
0
def test_required_args():
    client = Trakt("", "")

    p = Path("aaa/!b/ccc/?d", [{"a": str}])

    assert p.methods == ["GET"]
    assert p.args == ["!b", "?d"]

    default_alias = "aaa.ccc"

    assert p.aliases == [default_alias]
    assert p.does_match(default_alias)

    with pytest.raises(ArgumentError):
        p.is_valid(client)

    with pytest.raises(
            ArgumentError):  # intentional, assert didn't bind any values
        p.is_valid(client)

    assert p.is_valid(client, b=10)
    assert p.get_path_and_qargs() == ("aaa/10/ccc", {})
Exemple #5
0
def test_filters():
    client = Trakt("", "")
    p = Path("a", {})

    with pytest.raises(ArgumentError):
        p.is_valid(client, genres="genre")

    p = Path("a", {}, filters={"query", "genres"})

    assert p.is_valid(client, query="xyz")

    with pytest.raises(ArgumentError):
        p.is_valid(client, query=["xyz", "abc"])

    assert p.is_valid(client, genres="genre")
    assert p.is_valid(client, genres=["abc", "xyz"])

    with pytest.raises(ArgumentError):
        p.is_valid(client, query=[100, "abc"])
Exemple #6
0
def test_extended():
    client = Trakt("", "")

    p = Path("a", {}, extended=["full"])

    assert p.is_valid(client)
    assert p.is_valid(client, extended="full")
    assert p.is_valid(client, extended=True)

    with pytest.raises(ArgumentError):
        p.is_valid(client, extended="meta")

    p.is_valid(client, extended=True)
    _, quargs = p.get_path_and_qargs()
    assert "extended" in quargs and quargs["extended"] == "full"

    p = Path("a", {})
    p.is_valid(client)
    _, quargs = p.get_path_and_qargs()
    assert "extended" not in quargs