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, max_length=255,
label=_("Twitter profile name"), label=_("Twitter profile name"),
help_text=_("Profile name without hashtags"), help_text=_("Profile name without hashtags"),
required=True,
) )
def save(self, commit=True): def save(self, commit=True):

View file

@ -1,3 +1,4 @@
from django.test import TestCase from django.test import TestCase
from django.urls import reverse from django.urls import reverse
@ -5,8 +6,10 @@ import pytz
from newsreader.news.collection.choices import RuleTypeChoices from newsreader.news.collection.choices import RuleTypeChoices
from newsreader.news.collection.models import CollectionRule 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.tests.views.base import CollectionRuleViewTestCase
from newsreader.news.collection.twitter import TWITTER_URL from newsreader.news.collection.twitter import TWITTER_URL
from newsreader.news.core.tests.factories import CategoryFactory
class TwitterTimelineCreateViewTestCase(CollectionRuleViewTestCase, TestCase): class TwitterTimelineCreateViewTestCase(CollectionRuleViewTestCase, TestCase):
@ -34,3 +37,78 @@ class TwitterTimelineCreateViewTestCase(CollectionRuleViewTestCase, TestCase):
self.assertEquals(rule.favicon, None) self.assertEquals(rule.favicon, None)
self.assertEquals(rule.category.pk, self.category.pk) self.assertEquals(rule.category.pk, self.category.pk)
self.assertEquals(rule.user.pk, self.user.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" template_name = "news/collection/views/twitter/timeline-create.html"
# TODO add tests
class TwitterTimelineUpdateView( class TwitterTimelineUpdateView(
CollectionRuleViewMixin, CollectionRuleDetailMixin, UpdateView CollectionRuleViewMixin, CollectionRuleDetailMixin, UpdateView
): ):