Compare commits
3 Commits
431962c02f
...
1cda90c0bc
Author | SHA1 | Date | |
---|---|---|---|
1cda90c0bc | |||
9e76e5f0ee | |||
a9e2cb3ccc |
|
@ -1 +1,2 @@
|
||||||
pytest
|
pytest
|
||||||
|
wikidata
|
||||||
|
|
|
@ -14,7 +14,14 @@ from enforce_typing import enforce_types
|
||||||
|
|
||||||
from socials_util._version import __version__
|
from socials_util._version import __version__
|
||||||
|
|
||||||
__all__ = ['__version__', 'SocialSiteId', 'SocialLink', 'WikidataInfo', 'AGGERAGOR_SOCIALS', 'determine_social_from_url']
|
__all__ = [
|
||||||
|
'__version__',
|
||||||
|
'SocialSiteId',
|
||||||
|
'SocialLink',
|
||||||
|
'WikidataInfo',
|
||||||
|
'AGGERAGOR_SOCIALS',
|
||||||
|
'determine_social_from_url',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class SocialSiteId(aenum.Enum):
|
class SocialSiteId(aenum.Enum):
|
||||||
|
|
6
test/test_data.py
Normal file
6
test/test_data.py
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import socials_util
|
||||||
|
|
||||||
|
|
||||||
|
def test_is_aggregator():
|
||||||
|
assert not socials_util.SocialSiteId.PAGE_WATCH.is_aggregator()
|
||||||
|
assert not socials_util.SocialSiteId.FALKON_PROFILE_BOOKMARKS.is_aggregator()
|
|
@ -1,8 +1,14 @@
|
||||||
import aenum
|
import aenum
|
||||||
|
import pytest
|
||||||
|
|
||||||
import socials_util
|
import socials_util
|
||||||
|
|
||||||
|
|
||||||
|
def test_re_social_path_validation():
|
||||||
|
with pytest.raises(ValueError, match='Redundant www: www.example.org'):
|
||||||
|
socials_util.re_social_path('www.example.org')
|
||||||
|
|
||||||
|
|
||||||
def test_extension():
|
def test_extension():
|
||||||
my_secret_site = aenum.extend_enum(socials_util.SocialSiteId, 'MY_SECRET_SITE', 666)
|
my_secret_site = aenum.extend_enum(socials_util.SocialSiteId, 'MY_SECRET_SITE', 666)
|
||||||
assert my_secret_site
|
assert my_secret_site
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
import socials_util
|
||||||
from socials_util import SocialLink, SocialSiteId, determine_social_from_url
|
from socials_util import SocialLink, SocialSiteId, determine_social_from_url
|
||||||
|
|
||||||
PARSABLE_SOCIAL_IDS_COMBINED: list[tuple[str, object, str]] = [
|
PARSABLE_SOCIAL_IDS_COMBINED: list[tuple[str, object, str | None]] = [
|
||||||
# Tumblr formats
|
# Tumblr formats
|
||||||
('https://triviallytrue.tumblr.com/', SocialSiteId.TUMBLR, 'triviallytrue'),
|
('https://triviallytrue.tumblr.com/', SocialSiteId.TUMBLR, 'triviallytrue'),
|
||||||
('https://www.triviallytrue.tumblr.com/', SocialSiteId.TUMBLR, 'triviallytrue'),
|
('https://www.triviallytrue.tumblr.com/', SocialSiteId.TUMBLR, 'triviallytrue'),
|
||||||
|
@ -186,6 +189,11 @@ PARSABLE_SOCIAL_IDS_COMBINED: list[tuple[str, object, str]] = [
|
||||||
# Cara
|
# Cara
|
||||||
('https://cara.app/simzart', SocialSiteId.CARA_PROFILE, 'simzart'),
|
('https://cara.app/simzart', SocialSiteId.CARA_PROFILE, 'simzart'),
|
||||||
('https://cara.app/simzart/all', SocialSiteId.CARA_PROFILE, 'simzart'),
|
('https://cara.app/simzart/all', SocialSiteId.CARA_PROFILE, 'simzart'),
|
||||||
|
# Mastodon
|
||||||
|
('https://idlethumbs.social/@testtest', SocialSiteId.MASTODON_PAGE, None),
|
||||||
|
('https://mastodon.example.org/testtest', SocialSiteId.MASTODON_PAGE, None),
|
||||||
|
# Feeds
|
||||||
|
('https://example.org/main.atom', SocialSiteId.RSS_FEED, None),
|
||||||
]
|
]
|
||||||
|
|
||||||
NOT_PARSABLE = [
|
NOT_PARSABLE = [
|
||||||
|
@ -198,10 +206,12 @@ NOT_PARSABLE = [
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
('url','expected_social_site_id','expected_social_id'),
|
('url', 'expected_social_site_id', 'expected_social_id'),
|
||||||
PARSABLE_SOCIAL_IDS_COMBINED,
|
PARSABLE_SOCIAL_IDS_COMBINED,
|
||||||
)
|
)
|
||||||
def test_parse_social_ids(url: str, expected_social_site_id: SocialSiteId, expected_social_id: str) -> None:
|
def test_parse_social_ids(
|
||||||
|
url: str, expected_social_site_id: SocialSiteId, expected_social_id: str,
|
||||||
|
) -> None:
|
||||||
social_link: SocialLink | None = determine_social_from_url(url)
|
social_link: SocialLink | None = determine_social_from_url(url)
|
||||||
assert social_link is not None, url
|
assert social_link is not None, url
|
||||||
assert (social_link.social_id, social_link.social_site_id) == (
|
assert (social_link.social_id, social_link.social_site_id) == (
|
||||||
|
@ -213,3 +223,20 @@ def test_parse_social_ids(url: str, expected_social_site_id: SocialSiteId, expec
|
||||||
@pytest.mark.parametrize('url', NOT_PARSABLE)
|
@pytest.mark.parametrize('url', NOT_PARSABLE)
|
||||||
def test_not_parsable(url: str) -> None:
|
def test_not_parsable(url: str) -> None:
|
||||||
assert determine_social_from_url(url) is None
|
assert determine_social_from_url(url) is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_wrong_parse_type() -> None:
|
||||||
|
with pytest.raises(TypeError):
|
||||||
|
assert socials_util.to_parse_result(None)
|
||||||
|
|
||||||
|
|
||||||
|
def test_from_parse_result() -> None:
|
||||||
|
urlresult = urllib.parse.urlparse(
|
||||||
|
'https://old.reddit.com/user/Harpsibored/submitted/',
|
||||||
|
)
|
||||||
|
assert socials_util.to_parse_result(urlresult) is urlresult
|
||||||
|
|
||||||
|
|
||||||
|
def test_determine_social_from_url_internally() -> None:
|
||||||
|
with pytest.raises(TypeError):
|
||||||
|
assert socials_util.determine_social_from_url_internally(None)
|
||||||
|
|
11
test/test_wikidata_property.py
Normal file
11
test/test_wikidata_property.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import wikidata.client
|
||||||
|
|
||||||
|
import socials_util
|
||||||
|
|
||||||
|
|
||||||
|
def test_wikidata_properties():
|
||||||
|
wikidata_client = wikidata.client.Client()
|
||||||
|
wikidata_property = socials_util.SocialSiteId.RSS_FEED.wikidata_property(
|
||||||
|
wikidata_client,
|
||||||
|
)
|
||||||
|
assert wikidata_property is not None
|
Loading…
Reference in New Issue
Block a user