/ tests / test_self_promo.py
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))