urma/tests/test_processing_posts.py
2023-01-17 18:25:55 +00:00

120 lines
3.0 KiB
Python

import os
import pickle
from dateutil.tz import tzutc
from sqlalchemy import select
from models import (
Hashtags,
Posts,
)
from urma import (
process_bookmarked_posts,
process_posts_boosted_by_me,
process_favourited_posts,
)
BOOSTED_POST = "tests/boosted.pickle"
BOOSTING_POST = "tests/boosting.pickle"
FAVOURITED_POST = "tests/favourited.pickle"
ME_ID = 109568725613662482
def test_process_favourited_no_fave(session):
"""Test post not marked as favourite"""
with open(FAVOURITED_POST, "rb") as inp:
posts = pickle.load(inp)
# Sanity check
assert len(posts) == 1
# Set not favourited
posts[0]['favourited'] = False
process_favourited_posts(session, posts, ME_ID)
all_posts = session.execute(select(Posts)).scalars().all()
assert len(all_posts) == 0
def test_process_favourited_with_fave(session):
"""Test post marked as favourite"""
with open(FAVOURITED_POST, "rb") as inp:
posts = pickle.load(inp)
# Sanity check
assert len(posts) == 1
process_favourited_posts(session, posts, ME_ID)
all_posts = session.execute(select(Posts)).scalars().all()
assert len(all_posts) == 1
original_post = posts[0]
retrieved_post = all_posts[0]
assert original_post.id == int(retrieved_post.post_id)
assert original_post.account.id == int(retrieved_post.account.account_id)
assert original_post.created_at == retrieved_post.created_at
assert retrieved_post.favourited is True
def test_process_post_hashtags(session):
"""Test hashtags correctly parsed"""
with open(FAVOURITED_POST, "rb") as inp:
posts = pickle.load(inp)
# Sanity check
assert len(posts) == 1
process_favourited_posts(session, posts, ME_ID)
all_tags = Hashtags.get_all(session)
expected = ['fdroid', 'apps', 'android', 'foss', 'free', 'AndroidAppRain']
for hashtag in all_tags:
assert hashtag.name in expected
def test_process_boosts_by_me_no_boost(session):
"""Test processing boosted posts with no post that's been boosted"""
with open(BOOSTING_POST, "rb") as inp:
post = pickle.load(inp)
post['reblog'] = None
process_posts_boosted_by_me(session, [post], ME_ID)
all_posts = session.execute(select(Posts)).scalars().all()
assert len(all_posts) == 0
def test_process_boosts_by_me(session):
"""Test processing posts boosted by me"""
with open(BOOSTING_POST, "rb") as inp:
boosting = pickle.load(inp)
with open(BOOSTED_POST, "rb") as inp:
boosted = pickle.load(inp)
process_posts_boosted_by_me(session, [boosting], ME_ID)
all_posts = session.execute(select(Posts)).scalars().all()
assert len(all_posts) == 1
stored_post = all_posts[0]
assert boosted.account.id == int(stored_post.account.account_id)
assert boosted.id == int(stored_post.post_id)
def test_process_favourite_containing_boosted_post(session):
"""Test processing a favourited post that is a boost"""
pass