diff --git a/src/newsreader/news/collection/forms/twitter.py b/src/newsreader/news/collection/forms/twitter.py index 441b243..d856fdc 100644 --- a/src/newsreader/news/collection/forms/twitter.py +++ b/src/newsreader/news/collection/forms/twitter.py @@ -6,6 +6,7 @@ import pytz from newsreader.news.collection.choices import RuleTypeChoices from newsreader.news.collection.forms.base import CollectionRuleForm from newsreader.news.collection.models import CollectionRule +from newsreader.news.collection.twitter import TWITTER_URL class TwitterTimelineForm(CollectionRuleForm): @@ -20,6 +21,7 @@ class TwitterTimelineForm(CollectionRuleForm): instance.type = RuleTypeChoices.twitter_timeline instance.timezone = str(pytz.utc) + instance.url = f"{TWITTER_URL}/{instance.screen_name}" if commit: instance.save() diff --git a/src/newsreader/news/collection/tests/factories.py b/src/newsreader/news/collection/tests/factories.py index 81fa8ac..26f66cc 100644 --- a/src/newsreader/news/collection/tests/factories.py +++ b/src/newsreader/news/collection/tests/factories.py @@ -30,6 +30,6 @@ class SubredditFactory(CollectionRuleFactory): website_url = REDDIT_URL -class TwitterTimeLineFactory(CollectionRuleFactory): +class TwitterTimelineFactory(CollectionRuleFactory): type = RuleTypeChoices.twitter_timeline screen_name = factory.Faker("user_name") diff --git a/src/newsreader/news/collection/tests/views/test_twitter_views.py b/src/newsreader/news/collection/tests/views/test_twitter_views.py new file mode 100644 index 0000000..bae5756 --- /dev/null +++ b/src/newsreader/news/collection/tests/views/test_twitter_views.py @@ -0,0 +1,36 @@ +from django.test import TestCase +from django.urls import reverse + +import pytz + +from newsreader.news.collection.choices import RuleTypeChoices +from newsreader.news.collection.models import CollectionRule +from newsreader.news.collection.tests.views.base import CollectionRuleViewTestCase +from newsreader.news.collection.twitter import TWITTER_URL + + +class TwitterTimelineCreateViewTestCase(CollectionRuleViewTestCase, TestCase): + def setUp(self): + super().setUp() + + self.form_data = { + "name": "new rule", + "screen_name": "RobertsSpaceInd", + "category": str(self.category.pk), + } + + self.url = reverse("news:collection:twitter-timeline-create") + + def test_creation(self): + response = self.client.post(self.url, self.form_data) + + self.assertEquals(response.status_code, 302) + + rule = CollectionRule.objects.get(name="new rule") + + self.assertEquals(rule.type, RuleTypeChoices.twitter_timeline) + self.assertEquals(rule.url, f"{TWITTER_URL}/RobertsSpaceInd") + self.assertEquals(rule.timezone, str(pytz.utc)) + self.assertEquals(rule.favicon, None) + self.assertEquals(rule.category.pk, self.category.pk) + self.assertEquals(rule.user.pk, self.user.pk) diff --git a/src/newsreader/news/collection/views/twitter.py b/src/newsreader/news/collection/views/twitter.py index db87030..d854740 100644 --- a/src/newsreader/news/collection/views/twitter.py +++ b/src/newsreader/news/collection/views/twitter.py @@ -8,7 +8,6 @@ from newsreader.news.collection.views.base import ( ) -# TODO add tests class TwitterTimelineCreateView( CollectionRuleViewMixin, CollectionRuleDetailMixin, CreateView ):