def test_matches_mature_rating(): query1 = "deer rating:mature" query2 = "deer rating:questionable" subscription1 = Subscription(query1, 12432) subscription2 = Subscription(query2, 12432) submission = SubmissionBuilder( title="Deer plays in woods", rating=Rating.MATURE).build_full_submission() match1 = subscription1.matches_result(submission, AndQuery([])) match2 = subscription2.matches_result(submission, AndQuery([])) assert match1 assert match2
def test_matches_general_rating(): query1 = "deer rating:general" query2 = "deer rating:safe" subscription1 = Subscription(query1, 12432) subscription2 = Subscription(query2, 12432) submission = SubmissionBuilder( title="Deer plays in woods", rating=Rating.GENERAL).build_full_submission() match1 = subscription1.matches_result(submission, AndQuery([])) match2 = subscription2.matches_result(submission, AndQuery([])) assert match1 assert match2
def test_matches_explicit_rating(): query1 = "deer rating:adult" query2 = "deer rating:explicit" subscription1 = Subscription(query1, 12432) subscription2 = Subscription(query2, 12432) submission = SubmissionBuilder( title="Deer plays in woods", rating=Rating.ADULT).build_full_submission() match1 = subscription1.matches_result(submission, AndQuery([])) match2 = subscription2.matches_result(submission, AndQuery([])) assert match1 assert match2
def test_matches_result__suffix_doesnt_match_term(): query = "*taur" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="taur plays in woods").build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__regex_matches_case_insensitive(): query = "d*taur" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="DeerTaur plays in woods").build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert match
def test_matches_result__prefix_matches(): query = "deer*" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="deertaur plays in woods").build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert match
def test_matches_not_negative_rating(): query = "deer -rating:general" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Deer plays in woods", rating=Rating.GENERAL).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__two_words_in_description_matches(): query = "example submission" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="test", description="this submission is just an example", keywords=["example", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert match
def test_matches_result__keywords_not_phrase(): query = "\"hello world\"" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description="this submission says hello to the world", keywords=["example", "hello", "world"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_word_in_tag(): query = "deer" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description="this submission is <b>deer</b>", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert match
def test_matches_result__keyword_field(): query = "keywords:deer" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description="this submission has no deer and will not be tagged deer", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__matches_query_with_hyphen(): query = "an-example" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description="this submission is just an-example", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert match
def test_matches_result__does_not_match_query_with_applicable_negated_query(): query = "test -example" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description="this submission is just an example", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__case_insensitive_query(): query = "SUBMISSION" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="test submission", description="this submission is just an example", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert match
def test_matches_result__doesnt_match_except_quote(): query = "taur except \"no taur\"" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description="this submission contains no taur", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__substring_in_keywords_no_match(): query = "keyword" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="test submission", description="this submission is just an example", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__doesnt_match_blocklisted_tag(): query = "an-example" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description="this submission is just an-example", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, NotQuery(WordQuery("test"))) assert not match
def test_matches_result__except_matches_other_match(): query = "multi* except multitude" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description= "this submission is just an example of a multitude of multiple things", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert match
def test_matches_result__doesnt_match_except_bracket_clause(): query = "multi* except (multicol* or multitude)" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description= "this submission is just an example of a multitude of multicoloured things", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__not_when_paused(): query = "test" subscription = Subscription(query, 12432) subscription.paused = True submission = SubmissionBuilder( title="test submission", description="this submission is just an example", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__doesnt_match_except_field(): query = "keywords:(multi* except (multitude multiple multicol*))" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description= "this submission is about multiplication but not tagged like that", keywords=["multitude", "multiple", "multicoloured", "multicolors"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_matches_result__doesnt_match_blocklisted_rating(): query = "an-example" subscription = Subscription(query, 12432) submission = SubmissionBuilder( title="Test submission", description="this submission is just an-example", keywords=["example", "submission", "keywords"], rating=Rating.ADULT).build_full_submission() blocklist = AndQuery([ NotQuery(RatingQuery(Rating.ADULT)), NotQuery(RatingQuery(Rating.MATURE)) ]) match = subscription.matches_result(submission, blocklist) assert not match
assert match_search_query(searcher, query1) assert not match_search_query(searcher, query2) sub_end_time = datetime.datetime.now() end_time = datetime.datetime.now() print((end_time - start_time) / 100) print(((end_time - start_time) / 100).microseconds) print(" (Without searcher setup):") print((sub_end_time - sub_start_time) / 100) print(((sub_end_time - sub_start_time) / 100).microseconds) print("Whoosh to custom time:") query = MultifieldParser(search_fields, schema).parse("first") custom_query = whoosh_to_custom(query) start_time = datetime.datetime.now() for _ in range(50): assert custom_query.matches_submission(sub1) assert not custom_query.matches_submission(sub2) end_time = datetime.datetime.now() print((end_time - start_time) / 100) print(((end_time - start_time) / 100).microseconds) print("Current code time:") start_time = datetime.datetime.now() subscription = Subscription("first", 0) for _ in range(50): assert subscription.matches_result(sub1, set()) assert not subscription.matches_result(sub2, set()) end_time = datetime.datetime.now() print((end_time - start_time) / 100) print(((end_time - start_time) / 100).microseconds)