Mercurial > public > sg101
view news/tests/test_views.py @ 998:e2c3d7ecfa30
Added tests for submit news.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Fri, 20 Nov 2015 23:07:37 -0600 |
parents | |
children |
line wrap: on
line source
"""Unit tests for the news app.""" import datetime from django.contrib.auth.models import User from django.core.urlresolvers import reverse from django.test import TestCase from news.models import PendingStory class NewsTestCase(TestCase): def setUp(self): self.username = 'test_user' self.pw = 'password' self.user = User.objects.create_user(self.username, '', self.pw) self.user.save() self.assertTrue(self.client.login(username=self.username, password=self.pw)) def tearDown(self): pass class SubmitViewTestCase(NewsTestCase): fixtures = ['news_categories.json'] def setUp(self): super(SubmitViewTestCase, self).setUp() self.view_url = reverse('news-submit') def test_get(self): response = self.client.get(self.view_url) self.assertEqual(response.status_code, 200) def test_post(self): args = { 'title': 'My news story', 'category': '1', 'short_markup': "Here is the story text.", } now = datetime.datetime.now() response = self.client.post(self.view_url, args, follow=True) self.assertEqual(response.status_code, 200) self.assertEqual(response.redirect_chain, [('http://testserver' + reverse('news-submit_thanks'), 302)]) stories = list(PendingStory.objects.all()) self.assertEqual(len(stories), 1) story = stories[0] self.assertEqual(story.submitter, self.user) self.assertEqual(story.title, args['title']) self.assertEqual(story.short_markup, args['short_markup']) self.assertTrue(now - story.date_submitted < datetime.timedelta(seconds=2)) self.assertTrue(now - story.update_date < datetime.timedelta(seconds=2)) self.assertEqual(story.category.pk, 1) self.assertEqual(story.long_markup, '') self.assertEqual(story.long_text, '') self.assertEqual(story.short_text, '<p>{}</p>'.format(args['short_markup'])) def test_post_with_bad_image(self): args = { 'title': 'My news story', 'category': '1', 'short_markup': "Image: ![image](http://example.com/a.jpg)\n", } response = self.client.post(self.view_url, args, follow=True) self.assertEqual(response.status_code, 200) self.assertTrue('Image must be accessed via https' in response.content) self.assertEqual(response.redirect_chain, []) stories = list(PendingStory.objects.all()) self.assertEqual(len(stories), 0)