Refactoring, test coverage increased to 60% (#1943)

This commit is contained in:
Soxoj
2024-12-08 02:13:28 +01:00
committed by GitHub
parent 4b1317789d
commit c66d776f8a
19 changed files with 326 additions and 226 deletions
+20
View File
@@ -18,6 +18,26 @@ LOCAL_TEST_JSON_FILE = os.path.join(CUR_PATH, 'local.json')
empty_mark = Mark('', (), {})
RESULTS_EXAMPLE = {
'Reddit': {
'cookies': None,
'parsing_enabled': False,
'url_main': 'https://www.reddit.com/',
'username': 'Skyeng',
},
'GooglePlayStore': {
'cookies': None,
'http_status': 200,
'is_similar': False,
'parsing_enabled': False,
'rank': 1,
'url_main': 'https://play.google.com/store',
'url_user': 'https://play.google.com/store/apps/developer?id=Skyeng',
'username': 'Skyeng',
},
}
def by_slow_marker(item):
return item.get_closest_marker('slow', default=empty_mark).name
+28
View File
@@ -0,0 +1,28 @@
import pytest
from maigret.errors import notify_about_errors, CheckError
from maigret.types import QueryResultWrapper
from maigret.result import MaigretCheckResult, MaigretCheckStatus
def test_notify_about_errors():
results = {
'site1': {'status': MaigretCheckResult('', '', '', MaigretCheckStatus.UNKNOWN, error=CheckError('Captcha'))},
'site2': {'status': MaigretCheckResult('', '', '', MaigretCheckStatus.UNKNOWN, error=CheckError('Bot protection'))},
'site3': {'status': MaigretCheckResult('', '', '', MaigretCheckStatus.UNKNOWN, error=CheckError('Access denied'))},
'site4': {'status': MaigretCheckResult('', '', '', MaigretCheckStatus.CLAIMED, error=None)},
}
results = notify_about_errors(results, query_notify=None, show_statistics=True)
# Check the output
expected_output = [
('Too many errors of type "Captcha" (25.0%). Try to switch to another ip address or to use service cookies', '!'),
('Too many errors of type "Bot protection" (25.0%). Try to switch to another ip address', '!'),
('Too many errors of type "Access denied" (25.0%)', '!'),
('Verbose error statistics:', '-'),
('Captcha: 25.0%', '!'),
('Bot protection: 25.0%', '!'),
('Access denied: 25.0%', '!'),
('You can see detailed site check errors with a flag `--print-errors`', '-'),
]
assert results == expected_output
+6 -26
View File
@@ -12,28 +12,8 @@ from maigret.maigret import (
extract_ids_from_results,
)
from maigret.sites import MaigretSite
from maigret.result import QueryResult, QueryStatus
RESULTS_EXAMPLE = {
'Reddit': {
'cookies': None,
'parsing_enabled': False,
'url_main': 'https://www.reddit.com/',
'username': 'Skyeng',
},
'GooglePlayStore': {
'cookies': None,
'http_status': 200,
'is_similar': False,
'parsing_enabled': False,
'rank': 1,
'url_main': 'https://play.google.com/store',
'url_user': 'https://play.google.com/store/apps/developer?id=Skyeng',
'username': 'Skyeng',
},
}
from maigret.result import MaigretCheckResult, MaigretCheckStatus
from tests.conftest import RESULTS_EXAMPLE
@pytest.mark.slow
@pytest.mark.asyncio
@@ -86,12 +66,12 @@ def test_maigret_results(test_db):
del results['GooglePlayStore']['site']
reddit_status = results['Reddit']['status']
assert isinstance(reddit_status, QueryResult)
assert reddit_status.status == QueryStatus.ILLEGAL
assert isinstance(reddit_status, MaigretCheckResult)
assert reddit_status.status == MaigretCheckStatus.ILLEGAL
playstore_status = results['GooglePlayStore']['status']
assert isinstance(playstore_status, QueryResult)
assert playstore_status.status == QueryStatus.CLAIMED
assert isinstance(playstore_status, MaigretCheckResult)
assert playstore_status.status == MaigretCheckStatus.CLAIMED
del results['Reddit']['status']
del results['GooglePlayStore']['status']
+9 -9
View File
@@ -1,6 +1,6 @@
from maigret.errors import CheckError
from maigret.notify import QueryNotifyPrint
from maigret.result import QueryStatus, QueryResult
from maigret.result import MaigretCheckStatus, MaigretCheckResult
def test_notify_illegal():
@@ -8,9 +8,9 @@ def test_notify_illegal():
assert (
n.update(
QueryResult(
MaigretCheckResult(
username="test",
status=QueryStatus.ILLEGAL,
status=MaigretCheckStatus.ILLEGAL,
site_name="TEST_SITE",
site_url_user="http://example.com/test",
)
@@ -24,9 +24,9 @@ def test_notify_claimed():
assert (
n.update(
QueryResult(
MaigretCheckResult(
username="test",
status=QueryStatus.CLAIMED,
status=MaigretCheckStatus.CLAIMED,
site_name="TEST_SITE",
site_url_user="http://example.com/test",
)
@@ -40,9 +40,9 @@ def test_notify_available():
assert (
n.update(
QueryResult(
MaigretCheckResult(
username="test",
status=QueryStatus.AVAILABLE,
status=MaigretCheckStatus.AVAILABLE,
site_name="TEST_SITE",
site_url_user="http://example.com/test",
)
@@ -53,9 +53,9 @@ def test_notify_available():
def test_notify_unknown():
n = QueryNotifyPrint(color=False)
result = QueryResult(
result = MaigretCheckResult(
username="test",
status=QueryStatus.UNKNOWN,
status=MaigretCheckStatus.UNKNOWN,
site_name="TEST_SITE",
site_url_user="http://example.com/test",
)
+34
View File
@@ -0,0 +1,34 @@
import pytest
from maigret.permutator import Permute
def test_gather_strict():
elements = {'a': 1, 'b': 2}
permute = Permute(elements)
result = permute.gather(method="strict")
expected = {
'a_b': 1, 'b_a': 2,
'a-b': 1, 'b-a': 2,
'a.b': 1, 'b.a': 2,
'ab': 1, 'ba': 2,
'_ab': 1, 'ab_': 1,
'_ba': 2, 'ba_': 2
}
assert result == expected
def test_gather_all():
elements = {'a': 1, 'b': 2}
permute = Permute(elements)
result = permute.gather(method="all")
expected = {
'a': 1, '_a': 1, 'a_': 1,
'b': 2, '_b': 2, 'b_': 2,
'a_b': 1, 'b_a': 2,
'a-b': 1, 'b-a': 2,
'a.b': 1, 'b.a': 2,
'ab': 1, 'ba': 2,
'_ab': 1, 'ab_': 1,
'_ba': 2, 'ba_': 2
}
assert result == expected
+5 -5
View File
@@ -20,12 +20,12 @@ from maigret.report import (
generate_json_report,
get_plaintext_report,
)
from maigret.result import QueryResult, QueryStatus
from maigret.result import MaigretCheckResult, MaigretCheckStatus
from maigret.sites import MaigretSite
GOOD_RESULT = QueryResult('', '', '', QueryStatus.CLAIMED)
BAD_RESULT = QueryResult('', '', '', QueryStatus.AVAILABLE)
GOOD_RESULT = MaigretCheckResult('', '', '', MaigretCheckStatus.CLAIMED)
BAD_RESULT = MaigretCheckResult('', '', '', MaigretCheckStatus.AVAILABLE)
EXAMPLE_RESULTS = {
'GitHub': {
@@ -33,11 +33,11 @@ EXAMPLE_RESULTS = {
'parsing_enabled': True,
'url_main': 'https://www.github.com/',
'url_user': 'https://www.github.com/test',
'status': QueryResult(
'status': MaigretCheckResult(
'test',
'GitHub',
'https://www.github.com/test',
QueryStatus.CLAIMED,
MaigretCheckStatus.CLAIMED,
tags=['test_tag'],
),
'http_status': 200,