Add initial test
This commit is contained in:
parent
fec9af5626
commit
90bbcb4d27
3 changed files with 47 additions and 1 deletions
|
|
@ -28,3 +28,7 @@ class FeedFactory(CollectionRuleFactory):
|
||||||
class SubredditFactory(CollectionRuleFactory):
|
class SubredditFactory(CollectionRuleFactory):
|
||||||
type = RuleTypeChoices.subreddit
|
type = RuleTypeChoices.subreddit
|
||||||
website_url = REDDIT_URL
|
website_url = REDDIT_URL
|
||||||
|
|
||||||
|
|
||||||
|
class TwitterProfileFactory(CollectionRuleFactory):
|
||||||
|
type = RuleTypeChoices.twitter
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,17 @@
|
||||||
|
from datetime import datetime
|
||||||
from unittest import skip
|
from unittest import skip
|
||||||
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
|
from django.template.defaultfilters import truncatechars
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from django.utils.html import format_html
|
||||||
|
|
||||||
|
import pytz
|
||||||
|
|
||||||
|
from newsreader.news.collection.tests.factories import TwitterProfileFactory
|
||||||
|
from newsreader.news.collection.tests.twitter.builder.mocks import simple_mock
|
||||||
|
from newsreader.news.collection.twitter import TWITTER_URL, TwitterBuilder
|
||||||
|
from newsreader.news.core.models import Post
|
||||||
|
|
||||||
|
|
||||||
class TwitterBuilderTestCase(TestCase):
|
class TwitterBuilderTestCase(TestCase):
|
||||||
|
|
@ -9,7 +20,35 @@ class TwitterBuilderTestCase(TestCase):
|
||||||
|
|
||||||
@skip("Not implemented")
|
@skip("Not implemented")
|
||||||
def test_simple_post(self):
|
def test_simple_post(self):
|
||||||
pass
|
builder = TwitterBuilder
|
||||||
|
|
||||||
|
profile = TwitterProfileFactory()
|
||||||
|
mock_stream = MagicMock(rule=profile)
|
||||||
|
|
||||||
|
with builder((simple_mock, mock_stream)) as builder:
|
||||||
|
builder.save()
|
||||||
|
|
||||||
|
posts = {post.remote_identifier: post for post in Post.objects.all()}
|
||||||
|
|
||||||
|
self.assertCountEqual(
|
||||||
|
("1291528756373286914", "1288550304095416320"), posts.keys()
|
||||||
|
)
|
||||||
|
|
||||||
|
post = posts["1291528756373286914"]
|
||||||
|
|
||||||
|
full_text = "@ArieNeoSC Here you go, goodnight!\n\nhttps://t.co/trAcIxBMlX"
|
||||||
|
|
||||||
|
self.assertEquals(post.rule, profile)
|
||||||
|
self.assertEquals(post.title, truncatechars(full_text, 20))
|
||||||
|
self.assertEquals(post.body, format_html(full_text))
|
||||||
|
|
||||||
|
self.assertEquals(post.author, "Star Citizen")
|
||||||
|
self.assertEquals(
|
||||||
|
post.url, f"{TWITTER_URL}/RobertsSpaceInd/1291528756373286914"
|
||||||
|
)
|
||||||
|
self.assertEquals(
|
||||||
|
post.publication_date, pytz.utc.localize(datetime(2020, 8, 7, 0, 17, 5))
|
||||||
|
)
|
||||||
|
|
||||||
# Note that only one media type can be uploaded to an Tweet
|
# Note that only one media type can be uploaded to an Tweet
|
||||||
# see https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/extended-entities-object
|
# see https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/extended-entities-object
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
from newsreader.news.collection.base import Builder, Client, Collector, Stream
|
from newsreader.news.collection.base import Builder, Client, Collector, Stream
|
||||||
|
|
||||||
|
|
||||||
|
TWITTER_URL = "https://twitter.com"
|
||||||
|
|
||||||
|
|
||||||
class TwitterScheduler:
|
class TwitterScheduler:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue