77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
import unittest
|
|
from .base import root_path
|
|
from manga_py.fs import path_join
|
|
from manga_py.providers.helpers.std import Std
|
|
from manga_py.provider import Provider
|
|
|
|
|
|
class M(Std, Provider):
|
|
def get_main_content(self):
|
|
return self._get_content('{}/{}')
|
|
|
|
def get_manga_name(self) -> str:
|
|
return self._get_name(r'\.\w+/([^/]+)\?')
|
|
|
|
def get_chapters(self) -> list:
|
|
return self._elements('a')
|
|
|
|
def get_files(self) -> list:
|
|
parser = self.document_fromstring(self.content)
|
|
return self._images_helper(parser, 'a', 'href')
|
|
|
|
def get_archive_name(self) -> str:
|
|
return 'archive'
|
|
|
|
def get_chapter_index(self) -> str:
|
|
return '0'
|
|
|
|
|
|
class TestStd(unittest.TestCase):
|
|
@property
|
|
def _provider(self):
|
|
provider = M()
|
|
provider._params['url'] = 'https://www.google.com/imghp?hl=&tab=wi'
|
|
return provider
|
|
|
|
def test_base(self):
|
|
provider = self._provider
|
|
self.assertTrue(provider.get_manga_name() == provider.manga_name)
|
|
self.assertNotIn('manga_name', provider._storage)
|
|
provider._storage['manga_name'] = provider.get_manga_name() + '-name'
|
|
self.assertFalse(provider.get_manga_name() == provider.manga_name)
|
|
self.assertTrue(~provider.manga_name.find('imghp'))
|
|
provider._storage['manga_name'] = provider.get_manga_name()
|
|
self.assertTrue(len(provider.content) > 100)
|
|
|
|
def test_cookies(self):
|
|
provider = self._provider
|
|
provider._base_cookies(provider.get_url())
|
|
self.assertTrue(len(provider._storage['cookies'].keys()) > 0)
|
|
|
|
def test_normal_name(self):
|
|
name = self._provider.normal_arc_name(['1', '2'])
|
|
self.assertEqual('vol_001-2', name)
|
|
|
|
def test_iterators(self):
|
|
provider = self._provider
|
|
provider._storage['manga_name'] = provider.manga_name
|
|
self.assertTrue(len(provider.get_chapters()) > 0)
|
|
self.assertTrue(~provider.get_files()[0].find('.google.'))
|
|
|
|
def test_cover_from_content(self):
|
|
self.content = '<html>'
|
|
src = self._provider._cover_from_content('img')
|
|
self.assertEqual('http', src[:4])
|
|
|
|
def test_first_select(self):
|
|
provider = self._provider
|
|
with open(path_join(root_path, 'files', 'select.html'), 'r') as f:
|
|
provider._storage['main_content'] = f.read()
|
|
reference = len(provider._elements('select')[0].cssselect('option'))
|
|
parser = provider.document_fromstring(provider.content)
|
|
skip = len(provider._first_select_options(parser, 'select'))
|
|
not_exists = len(provider._first_select_options(parser, 'select#not_exists_selector'))
|
|
|
|
self.assertTrue(reference == (skip + 1))
|
|
self.assertTrue(not_exists == 0)
|