Esempio n. 1
0
 def test_if_comments_are_yielded(self):
     self.scrape.db_ids = []
     self.scrape.nsfw_filter = False
     entry = Entry(id_='22')
     comment = Entry(id_='44')
     self.parser.get_main_entry.return_value = entry
     self.parser.get_comments_generator.return_value = (
         c for c in [comment, comment, comment])
     gen = self.scrape.gen_one_entry('22', 'html')
     self.assertEqual(next(gen).id_, entry.id_)
     self.assertEqual(next(gen).id_, comment.id_)
     self.assertEqual(next(gen).id_, comment.id_)
     self.assertEqual(next(gen).id_, comment.id_)
     with self.assertRaises(StopIteration):
         next(gen)
Esempio n. 2
0
    def test_create(self, mock_get_all_entries, mock_count_tags, mock_db, test_strftime):
        test_strftime.return_value = self.date
        tags = [('testtag1', 123), ('testtag2', 1), ('testtag3', 25)]
        mock_count_tags.return_value = tags
        entry_args = ('444', 'testauthor', 'testdate', '', 'testbody_html', 'testurl', '+1000',
                      'testmedia_url', 'testtags', '')
        sample_entry = Entry(*entry_args)
        mock_get_all_entries.return_value = [sample_entry]

        class MockConnect(ContextDecorator):
            def __enter__(self):
                pass

            def __exit__(self, exc_type, exc_val, exc_tb):
                pass

        DB.Connect = MockConnect
        htmlfile = HtmlFile()
        htmlfile.user_files_path = os.path.join(settings.SAVE_PATH, 'tests')
        htmlfile.create()

        self.assertTrue(os.path.isfile(self.html_path))

        with open(self.html_path, 'r') as file:
            content = file.read()

        for tag, _ in tags:
            self.assertTrue(tag in content)
        for arg in entry_args:
            self.assertTrue(arg in content)
Esempio n. 3
0
 def setUp(self):
     super().setUp()
     DB.create_new('test')
     self.db_path = os.path.join(self.path, 'test.db')
     self.entry = Entry(id_=123, author='test_author', date='test_date', body='test_body',
                        body_html='test_body_html', url='test_url', plus='1000',
                        media_url='test_media_url', tags=' testtag1 testtag2 ', is_nsfw=False,
                        entry_id=None, type_='entry')
Esempio n. 4
0
 def setUp(self):
     entry = Entry(id_=123)
     self.parser = Mock()
     self.parser.parse.return_value = entry
     self.parser.entry = entry
     self.parser_cls = Mock(return_value=self.parser)
     self.db = Mock()
     self.api = APIMethod(self.parser_cls, self.db)
Esempio n. 5
0
 def setUp(self):
     settings.ENTRIES_ADDED = 0
     settings.COMMENTS_ADDED = 0
     settings.USER_FILES_PATH = os.path.join(settings.SAVE_PATH, 'tests')
     self.path = os.path.join(settings.USER_FILES_PATH, 'db')
     os.makedirs(self.path, exist_ok=True)
     self.entry = Entry(id_=1, author='test_author', date='test_date', body='test_body',
                        body_html='test_body_html', url='test_url', plus='1000',
                        media_url='test_media_url', tags=' testtag1 ', is_nsfw=False,
                        entry_id=None, type_='entry')
Esempio n. 6
0
 def setUp(self):
     self.entry = Entry(123, 'author', 'date', 'body', 'body_html', 'url',
                        'plus', 'media_url', 'tags', 'is_nsfw', 'entry_id',
                        'type_')
Esempio n. 7
0
class EntryTest(unittest.TestCase):
    def setUp(self):
        self.entry = Entry(123, 'author', 'date', 'body', 'body_html', 'url',
                           'plus', 'media_url', 'tags', 'is_nsfw', 'entry_id',
                           'type_')

    def test_attrs_gen(self):
        args = (123, 'author', 'date', 'body', 'body_html', 'url', 'plus',
                'media_url', 'tags', 'is_nsfw', 'entry_id', 'type_')

        self.assertEqual(tuple(self.entry.attrs_gen()), args[:11])
        self.assertEqual(tuple(self.entry.__iter__()), args[:11])

    def test_str(self):
        self.assertEqual('entry_id_123', str(self.entry))
        self.entry.entry_id = None
        self.assertEqual('123', str(self.entry))

    def test_download_info(self):
        d_info = {
            'id_': 'entry_id_123',
            'media_url': 'media_url',
            'is_nsfw': 'is_nsfw',
            'local_file_path': ''
        }
        self.assertEqual(self.entry.download_info(), d_info)

    def test_comments_count_with_entry_id(self):
        self.assertIsNone(self.entry.comments_count)

    @patch('taktyk.db.DB.count_comments')
    def test_comments_count_without_entry_id(self, mock_comments_count):
        self.entry.entry_id = None
        mock_comments_count.return_value = 125
        self.assertEqual(125, self.entry.comments_count)

    def test_media_ext_when_media_url_is_none(self):
        self.entry.media_url = ''
        self.assertIsNone(self.entry.media_ext)

    def test_media_ext_when_media_url_has_ext(self):
        self.entry.media_url = 'somemediaurl.jpg'
        self.assertEqual('.jpg', self.entry.media_ext)

    def test_media_ext_when_media_url_has_questionmark_inside(self):
        self.entry.media_url = 'somemediaurl.gif?someweirdending'
        self.assertEqual('.gif', self.entry.media_ext)

    def test_media_ext_when_media_url_is_gfycat(self):
        self.entry.media_url = 'http://gfycat.com/asdf8df7s7'
        self.assertEqual('.webm', self.entry.media_ext)

    def test_media_ext_when_no_ext_in_media_url(self):
        self.entry.media_url = 'www.youtube.com/avideo'
        self.assertFalse(self.entry.media_ext)

    def test_local_file_path_when_no_media_url_or_ext(self):
        self.entry.media_url = ''
        self.assertFalse(self.entry.local_file_path)
        self.entry.media_url = 'www.youtube.com/avideo'
        self.assertFalse(self.entry.local_file_path)

    def test_local_file_path_when_is_nsfw_is_true_and_not_comment(self):
        self.entry.is_nsfw = True
        self.entry.entry_id = None
        self.entry.media_url = 'url/with/ext.png'
        settings.FILES_DIR_NAME = 'dir'
        expected_path = os.path.join('dir', 'nsfw', '123.png')
        self.assertEqual(expected_path, self.entry.local_file_path)

    def test_local_file_path_when_is_nsfw_is_true_and_is_comment(self):
        self.entry.is_nsfw = True
        self.entry.entry_id = '90'
        self.entry.media_url = 'url/with/ext.jpg'
        settings.FILES_DIR_NAME = 'dir'
        expected_path = os.path.join('dir', 'nsfw', 'komentarze', '90_123.jpg')
        self.assertEqual(expected_path, self.entry.local_file_path)

    def test_local_file_path_when_is_nsfw_is_false_and_not_comment(self):
        self.entry.is_nsfw = False
        self.entry.entry_id = None
        self.entry.media_url = 'url/with/ext.webm'
        settings.FILES_DIR_NAME = 'dir'
        expected_path = os.path.join('dir', '123.webm')
        self.assertEqual(expected_path, self.entry.local_file_path)

    def test_local_file_path_when_is_nsfw_is_false_and_is_comment(self):
        self.entry.is_nsfw = False
        self.entry.entry_id = '55'
        self.entry.media_url = 'url/with/ext.gif'
        settings.FILES_DIR_NAME = 'dir'
        expected_path = os.path.join('dir', 'komentarze', '55_123.gif')
        self.assertEqual(expected_path, self.entry.local_file_path)
Esempio n. 8
0
 def test_id_in_db_ids_full_update_false(self):
     self.scrape.db_ids = [123]
     self.scrape.full_update = False
     self.parser.get_main_entry.return_value = Entry()
     with self.assertRaises(StopIteration):
         next(self.scrape.gen_one_entry('123', 'html'))
Esempio n. 9
0
 def test_id_not_in_db_ids_nsfw_not_consistent(self):
     self.scrape.db_ids = [123]
     self.scrape.nsfw_filter = True
     entry = Entry(is_nsfw=False)
     self.parser.get_main_entry.return_value = entry
     self.assertEqual(next(self.scrape.gen_one_entry('1', 'html')), entry)
Esempio n. 10
0
 def test_id_not_in_db_ids_and_nsfw_is_consistent(self):
     self.scrape.db_ids = []
     self.scrape.nsfw_filter = True
     self.parser.get_main_entry.return_value = Entry(is_nsfw=True)
     with self.assertRaises(StopIteration):
         next(self.scrape.gen_one_entry('47', 'html'))
Esempio n. 11
0
 def setUp(self):
     self.parser = Mock()
     self.parser.get_main_entry.return_value = Entry(id_='123')
     self.parser_cls = Mock(return_value=self.parser)
     self.db_handler = Mock()
     self.scrape = ScrapeMethod(self.parser_cls, self.db_handler)