test_self_promo.py
1 from unittest import TestCase 2 3 from blottertrax.helper.self_promo_detector import SelfPromoDetector 4 from blottertrax.value_objects.parsed_submission import ParsedSubmission 5 6 7 class MockedSubmission: 8 def __init__(self, author_name): 9 self.author = type('', (), {})() 10 self.author.name = author_name 11 12 13 class TestSelfPromo(TestCase): 14 15 def test_it_should_detect_username_same_as_artist(self): 16 parsed = ParsedSubmission(True, 'url', 'TestRedditor') 17 sub = MockedSubmission("testredditor01rocks") 18 self.assertTrue(SelfPromoDetector.is_self_promo(parsed, sub)) 19 20 parsed = ParsedSubmission(True, 'url', 'testredditor 01rocks') 21 sub = MockedSubmission("TestRedditor") 22 self.assertTrue(SelfPromoDetector.is_self_promo(parsed, sub)) 23 24 def test_it_should_detect_username_same_as_featured_artist(self): 25 parsed = ParsedSubmission(True, 'url', 'NoMatch', 'redditor01rocks') 26 sub = MockedSubmission("testredditor01rocks") 27 self.assertTrue(SelfPromoDetector.is_self_promo(parsed, sub)) 28 29 parsed = ParsedSubmission(True, 'url', 'NoMatch', 'test redditor 01 rocks') 30 sub = MockedSubmission("redditor01") 31 self.assertTrue(SelfPromoDetector.is_self_promo(parsed, sub)) 32 33 def test_it_should_not_fail_on_failed_parsed_submission(self): 34 parsed = ParsedSubmission(False, 'url') 35 sub = MockedSubmission("testredditor01rocks") 36 self.assertFalse(SelfPromoDetector.is_self_promo(parsed, sub)) 37 38 def test_it_should_fail_on_no_match(self): 39 parsed = ParsedSubmission(True, 'url', 'Nedl2dinin') 40 sub = MockedSubmission("Not_Ned l1inin") 41 self.assertFalse(SelfPromoDetector.is_self_promo(parsed, sub)) 42 43 def test_it_should_work_with_spaces_and_dashes(self): 44 parsed = ParsedSubmission(True, 'url', 'Test_Red_Ditor') 45 sub = MockedSubmission("TestRedditor") 46 self.assertTrue(SelfPromoDetector.is_self_promo(parsed, sub)) 47 48 parsed = ParsedSubmission(True, 'url', 'te_str-edd-itor 01rocks') 49 sub = MockedSubmission("TestRedditor") 50 self.assertTrue(SelfPromoDetector.is_self_promo(parsed, sub)) 51 52 def test_it_should_fail_on_short_user_names(self): 53 parsed = ParsedSubmission(True, 'url', 'Test_Red_Ditor') 54 sub = MockedSubmission("-------___e____") # Evals to just "e" inside detector 55 self.assertFalse(SelfPromoDetector.is_self_promo(parsed, sub))