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)
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)
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')
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)
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')
def setUp(self): self.entry = Entry(123, 'author', 'date', 'body', 'body_html', 'url', 'plus', 'media_url', 'tags', 'is_nsfw', 'entry_id', 'type_')
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)
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'))
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)
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'))
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)