Ejemplo n.º 1
0
def test_connectors():
    assert parse_query("first and document") == AndQuery([WordQuery("first"), WordQuery("document")])
    assert parse_query("first or document") == OrQuery([WordQuery("first"), WordQuery("document")])
    assert parse_query("first AND doc OR document") == OrQuery(
        [AndQuery([WordQuery("first"), WordQuery("doc")]), WordQuery("document")]
    )
    assert parse_query("first doc OR document") == OrQuery(
        [AndQuery([WordQuery("first"), WordQuery("doc")]), WordQuery("document")]
    )
Ejemplo n.º 2
0
def test_fields():
    assert parse_query("keyword:first document") == AndQuery(
        [WordQuery("first", KeywordField()), WordQuery("document")]
    )
    assert parse_query("keyword:\"first document\"") == PhraseQuery("first document", KeywordField())
    with pytest.raises(InvalidQueryException):
        parse_query("keyword:(first and document)")
    assert parse_query("@keyword first document") == AndQuery(
        [WordQuery("first", KeywordField()), WordQuery("document")]
    )
Ejemplo n.º 3
0
def test_brackets():
    assert parse_query("(first)") == WordQuery("first")
    assert parse_query("first and (doc or document)") == AndQuery(
        [WordQuery("first"), OrQuery([WordQuery("doc"), WordQuery("document")])]
    )
    assert parse_query("first (doc or document)") == AndQuery(
        [WordQuery("first"), OrQuery([WordQuery("doc"), WordQuery("document")])]
    )
    with pytest.raises(InvalidQueryException):
        parse_query("first (doc or document")
Ejemplo n.º 4
0
 def add_to_blocklist(self, destination: int, tag: str):
     # Ensure blocklist query can be parsed without error
     self.blocklist_query_cache[tag] = parse_query(tag)
     # Add to blocklists
     if destination in self.blocklists:
         self.blocklists[destination].add(tag)
     else:
         self.blocklists[destination] = {tag}
Ejemplo n.º 5
0
def test_negation():
    assert parse_query("-first") == NotQuery(WordQuery("first"))
    assert parse_query("!first") == NotQuery(WordQuery("first"))
    assert parse_query("! first") == NotQuery(WordQuery("first"))
    assert parse_query("not first") == NotQuery(WordQuery("first"))
    assert parse_query("NOT first") == NotQuery(WordQuery("first"))
    assert parse_query("first not second") == AndQuery([WordQuery("first"), NotQuery(WordQuery("second"))])
Ejemplo n.º 6
0
def test_quotes():
    assert parse_query("\"first document\"") == PhraseQuery("first document")
    assert parse_query("\"Hello WORLD!\"") == PhraseQuery("Hello WORLD!")
Ejemplo n.º 7
0
def test_rating_field():
    assert parse_query("rating:general") == RatingQuery(Rating.GENERAL)
    assert parse_query("-rating:adult") == NotQuery(RatingQuery(Rating.ADULT))
    assert parse_query("ych rating:mature") == AndQuery([WordQuery("ych"), RatingQuery(Rating.MATURE)])
Ejemplo n.º 8
0
def test_description_field():
    assert parse_query("description:first") == WordQuery("first", DescriptionField())
    assert parse_query("desc:first") == WordQuery("first", DescriptionField())
    assert parse_query("message:first") == WordQuery("first", DescriptionField())
Ejemplo n.º 9
0
def test_rating_invalid():
    with pytest.raises(InvalidQueryException):
        parse_query("rating:alright")
Ejemplo n.º 10
0
def test_escaped_quotes():
    assert parse_query("\"hello \\\" document\"") == PhraseQuery("hello \" document")
Ejemplo n.º 11
0
def test_exceptions():
    assert parse_query("multi* except (multitude or \"no multi\" or multicol*)") == ExceptionQuery(
        PrefixQuery("multi"), LocationOrQuery([
            WordQuery("multitude"), PhraseQuery("no multi"), PrefixQuery("multicol")
        ])
    )
Ejemplo n.º 12
0
def test_exception():
    assert parse_query("multi* except multitude") == ExceptionQuery(
        PrefixQuery("multi"), LocationOrQuery([WordQuery("multitude")])
    )
Ejemplo n.º 13
0
def test_regex():
    assert parse_query("fi*st") == RegexQuery.from_string_with_asterisks("fi*st")
    assert parse_query("*fi*st*") == RegexQuery.from_string_with_asterisks("*fi*st*")
Ejemplo n.º 14
0
def test_suffix():
    assert parse_query("*first") == SuffixQuery("first")
Ejemplo n.º 15
0
def test_prefix():
    assert parse_query("first*") == PrefixQuery("first")
Ejemplo n.º 16
0
def test_invalid_field():
    with pytest.raises(InvalidQueryException):
        parse_query("fake:first")
Ejemplo n.º 17
0
def test_quotes_and_brackets():
    assert parse_query("not (hello \"first :) document\")") == NotQuery(
        AndQuery([WordQuery("hello"), PhraseQuery("first :) document")])
    )
Ejemplo n.º 18
0
def test_field_brackets():
    with pytest.raises(InvalidQueryException):
        parse_query("keywords:(deer ych)")
Ejemplo n.º 19
0
def test_extra_quotes():
    with pytest.raises(InvalidQueryException):
        parse_query("\"hello \" document\"")
Ejemplo n.º 20
0
def test_title_field():
    assert parse_query("title:first") == WordQuery("first", TitleField())
    assert parse_query("TITLE: first") == WordQuery("first", TitleField())
Ejemplo n.º 21
0
def test_field_exceptions_brackets():
    assert parse_query("keywords:(multi* except multicol*)") == ExceptionQuery(
        PrefixQuery("multi", KeywordField()),
        LocationOrQuery([PrefixQuery("multicol", KeywordField())])
    )
Ejemplo n.º 22
0
def test_rating_quote():
    with pytest.raises(InvalidQueryException):
        parse_query("rating:\"general adult\"")
Ejemplo n.º 23
0
def test_keyword_field():
    assert parse_query("keywords:ych") == WordQuery("ych", KeywordField())
    assert parse_query("tags:deer") == WordQuery("deer", KeywordField())
    assert parse_query("tag:dragon") == WordQuery("dragon", KeywordField())
Ejemplo n.º 24
0
def test_field_exception_invalid():
    with pytest.raises(InvalidQueryException):
        parse_query("multi* except keywords:multitude")
Ejemplo n.º 25
0
def test_parser():
    assert parse_query("first") == WordQuery("first")
    assert parse_query("first document") == AndQuery([WordQuery("first"), WordQuery("document")])
Ejemplo n.º 26
0
def test_keyword_exception_invalid():
    with pytest.raises(InvalidQueryException):
        q = parse_query("multi* except (multiple and multitude)")
        print(q)
    with pytest.raises(InvalidQueryException):
        parse_query("multi* except (not multitude)")
Ejemplo n.º 27
0
 def _get_blocklist_query(self, blocklist_str: str) -> Query:
     if blocklist_str not in self.blocklist_query_cache:
         self.blocklist_query_cache[blocklist_str] = parse_query(blocklist_str)
     return self.blocklist_query_cache[blocklist_str]
Ejemplo n.º 28
0
def test_word_starting_not():
    assert parse_query("notice") == WordQuery("notice")
Ejemplo n.º 29
0
 def __init__(self, query_str: str, destination: int):
     self.query_str = query_str
     self.destination = destination
     self.latest_update = None  # type: Optional[datetime.datetime]
     self.query = parse_query(query_str)
     self.paused = False
Ejemplo n.º 30
0
def test_artist_field():
    assert parse_query("artist:rajii") == WordQuery("rajii", ArtistField())
    assert parse_query("author:va-artist") == WordQuery("va-artist", ArtistField())
    assert parse_query("poster:fender") == WordQuery("fender", ArtistField())
    assert parse_query("lower:fender") == WordQuery("fender", ArtistField())
    assert parse_query("uploader:zephyr42") == WordQuery("zephyr42", ArtistField())