Add tests for SelfPost
This commit is contained in:
parent
b699639b5c
commit
be68d4eb1c
3 changed files with 31 additions and 4 deletions
|
@ -43,10 +43,13 @@ class Resource:
|
||||||
content = self.retry_download(self.url, 0)
|
content = self.retry_download(self.url, 0)
|
||||||
if content:
|
if content:
|
||||||
self.content = content
|
self.content = content
|
||||||
self.hash = hashlib.md5(self.content)
|
self.create_hash()
|
||||||
else:
|
else:
|
||||||
raise BulkDownloaderException('Could not download resource')
|
raise BulkDownloaderException('Could not download resource')
|
||||||
|
|
||||||
|
def create_hash(self):
|
||||||
|
self.hash = hashlib.md5(self.content)
|
||||||
|
|
||||||
def _determine_extension(self) -> str:
|
def _determine_extension(self) -> str:
|
||||||
extension_pattern = r'.*(\..{3,5})$'
|
extension_pattern = r'.*(\..{3,5})$'
|
||||||
match = re.search(extension_pattern, self.url)
|
match = re.search(extension_pattern, self.url)
|
||||||
|
|
|
@ -5,8 +5,8 @@ from typing import Optional
|
||||||
|
|
||||||
from praw.models import Submission
|
from praw.models import Submission
|
||||||
|
|
||||||
from bulkredditdownloader.site_authenticator import SiteAuthenticator
|
|
||||||
from bulkredditdownloader.resource import Resource
|
from bulkredditdownloader.resource import Resource
|
||||||
|
from bulkredditdownloader.site_authenticator import SiteAuthenticator
|
||||||
from bulkredditdownloader.site_downloaders.base_downloader import BaseDownloader
|
from bulkredditdownloader.site_downloaders.base_downloader import BaseDownloader
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -18,8 +18,9 @@ class SelfPost(BaseDownloader):
|
||||||
|
|
||||||
def find_resources(self, authenticator: Optional[SiteAuthenticator] = None) -> list[Resource]:
|
def find_resources(self, authenticator: Optional[SiteAuthenticator] = None) -> list[Resource]:
|
||||||
out = Resource(self.post, self.post.url)
|
out = Resource(self.post, self.post.url)
|
||||||
out.content = self.export_to_string()
|
out.content = self.export_to_string().encode('utf-8')
|
||||||
return out
|
out.create_hash()
|
||||||
|
return [out]
|
||||||
|
|
||||||
def export_to_string(self) -> str:
|
def export_to_string(self) -> str:
|
||||||
"""Self posts are formatted here"""
|
"""Self posts are formatted here"""
|
||||||
|
|
23
bulkredditdownloader/tests/downloaders/test_self_post.py
Normal file
23
bulkredditdownloader/tests/downloaders/test_self_post.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# coding=utf-8
|
||||||
|
|
||||||
|
import praw
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from bulkredditdownloader.resource import Resource
|
||||||
|
from bulkredditdownloader.site_downloaders.self_post import SelfPost
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.online
|
||||||
|
@pytest.mark.reddit
|
||||||
|
@pytest.mark.parametrize(('test_submission_id', 'expected_hash'), (
|
||||||
|
('ltmivt', '7d2c9e4e989e5cf2dca2e55a06b1c4f6'),
|
||||||
|
('ltoaan', '221606386b614d6780c2585a59bd333f'),
|
||||||
|
))
|
||||||
|
def test_find_resource(test_submission_id: str, expected_hash: str, reddit_instance: praw.Reddit):
|
||||||
|
submission = reddit_instance.submission(id=test_submission_id)
|
||||||
|
downloader = SelfPost(submission)
|
||||||
|
results = downloader.find_resources()
|
||||||
|
assert len(results) == 1
|
||||||
|
assert isinstance(results[0], Resource)
|
||||||
|
assert results[0].hash.hexdigest() == expected_hash
|
Loading…
Reference in a new issue