From 0411d7659650105d8cd7f0bc1afcaab7627ee381 Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Mon, 21 Sep 2020 22:56:07 +0200 Subject: [PATCH] Add twitter timeline update view tests --- .../news/collection/forms/twitter.py | 1 + .../tests/views/test_twitter_views.py | 78 +++++++++++++++++++ .../news/collection/views/twitter.py | 1 - 3 files changed, 79 insertions(+), 1 deletion(-) diff --git a/src/newsreader/news/collection/forms/twitter.py b/src/newsreader/news/collection/forms/twitter.py index d856fdc..5603c7a 100644 --- a/src/newsreader/news/collection/forms/twitter.py +++ b/src/newsreader/news/collection/forms/twitter.py @@ -14,6 +14,7 @@ class TwitterTimelineForm(CollectionRuleForm): max_length=255, label=_("Twitter profile name"), help_text=_("Profile name without hashtags"), + required=True, ) def save(self, commit=True): diff --git a/src/newsreader/news/collection/tests/views/test_twitter_views.py b/src/newsreader/news/collection/tests/views/test_twitter_views.py index bae5756..4f178cc 100644 --- a/src/newsreader/news/collection/tests/views/test_twitter_views.py +++ b/src/newsreader/news/collection/tests/views/test_twitter_views.py @@ -1,3 +1,4 @@ + from django.test import TestCase from django.urls import reverse @@ -5,8 +6,10 @@ import pytz from newsreader.news.collection.choices import RuleTypeChoices from newsreader.news.collection.models import CollectionRule +from newsreader.news.collection.tests.factories import TwitterTimelineFactory from newsreader.news.collection.tests.views.base import CollectionRuleViewTestCase from newsreader.news.collection.twitter import TWITTER_URL +from newsreader.news.core.tests.factories import CategoryFactory class TwitterTimelineCreateViewTestCase(CollectionRuleViewTestCase, TestCase): @@ -34,3 +37,78 @@ class TwitterTimelineCreateViewTestCase(CollectionRuleViewTestCase, TestCase): self.assertEquals(rule.favicon, None) self.assertEquals(rule.category.pk, self.category.pk) self.assertEquals(rule.user.pk, self.user.pk) + + +class TwitterTimelineUpdateViewTestCase(CollectionRuleViewTestCase, TestCase): + def setUp(self): + super().setUp() + + self.rule = TwitterTimelineFactory( + name="Star citizen", + screen_name="RobertsSpaceInd", + user=self.user, + category=self.category, + type=RuleTypeChoices.twitter_timeline, + ) + self.url = reverse( + "news:collection:twitter-timeline-update", kwargs={"pk": self.rule.pk} + ) + + self.form_data = { + "name": self.rule.name, + "screen_name": self.rule.screen_name, + "category": str(self.category.pk), + "timezone": pytz.utc, + } + + def test_name_change(self): + self.form_data.update(name="Star citizen Twitter") + + response = self.client.post(self.url, self.form_data) + self.assertEquals(response.status_code, 302) + + self.rule.refresh_from_db() + + self.assertEquals(self.rule.name, "Star citizen Twitter") + + def test_category_change(self): + new_category = CategoryFactory(user=self.user) + + self.form_data.update(category=new_category.pk) + + response = self.client.post(self.url, self.form_data) + self.assertEquals(response.status_code, 302) + + self.rule.refresh_from_db() + + self.assertEquals(self.rule.category.pk, new_category.pk) + + def test_twitter_timelines_only(self): + rule = TwitterTimelineFactory( + name="Fake twitter", + user=self.user, + category=self.category, + type=RuleTypeChoices.feed, + url="https://twitter.com/RobertsSpaceInd", + ) + url = reverse("news:collection:twitter-timeline-update", kwargs={"pk": rule.pk}) + + response = self.client.get(url) + + self.assertEquals(response.status_code, 404) + + def test_screen_name_change(self): + self.form_data.update(screen_name="CyberpunkGame") + + response = self.client.post(self.url, self.form_data) + + self.assertEquals(response.status_code, 302) + + self.rule.refresh_from_db() + + self.assertEquals(self.rule.type, RuleTypeChoices.twitter_timeline) + self.assertEquals(self.rule.url, f"{TWITTER_URL}/CyberpunkGame") + self.assertEquals(self.rule.timezone, str(pytz.utc)) + self.assertEquals(self.rule.favicon, None) + self.assertEquals(self.rule.category.pk, self.category.pk) + self.assertEquals(self.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 d854740..c60dbda 100644 --- a/src/newsreader/news/collection/views/twitter.py +++ b/src/newsreader/news/collection/views/twitter.py @@ -15,7 +15,6 @@ class TwitterTimelineCreateView( template_name = "news/collection/views/twitter/timeline-create.html" -# TODO add tests class TwitterTimelineUpdateView( CollectionRuleViewMixin, CollectionRuleDetailMixin, UpdateView ):