Add twitter timeline update view tests

This commit is contained in:
Sonny Bakker 2020-09-21 22:56:07 +02:00
parent 3e3af4ce95
commit 0411d76596
3 changed files with 79 additions and 1 deletions

View file

@ -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):

View file

@ -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)

View file

@ -15,7 +15,6 @@ class TwitterTimelineCreateView(
template_name = "news/collection/views/twitter/timeline-create.html"
# TODO add tests
class TwitterTimelineUpdateView(
CollectionRuleViewMixin, CollectionRuleDetailMixin, UpdateView
):