-
-
Save vitorfs/13e75451396d76354b476edaefadbdab to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.contrib.auth.models import User | |
from django.test import TestCase | |
from django.urls import resolve, reverse | |
from ..forms import NewTopicForm | |
from ..models import Board, Post, Topic | |
from ..views import new_topic | |
class NewTopicTests(TestCase): | |
def setUp(self): | |
Board.objects.create(name='Django', description='Django board.') | |
User.objects.create_user(username='john', email='john@doe.com', password='123') | |
self.client.login(username='john', password='123') | |
def test_new_topic_view_success_status_code(self): | |
url = reverse('new_topic', kwargs={'pk': 1}) | |
response = self.client.get(url) | |
self.assertEquals(response.status_code, 200) | |
def test_new_topic_view_not_found_status_code(self): | |
url = reverse('new_topic', kwargs={'pk': 99}) | |
response = self.client.get(url) | |
self.assertEquals(response.status_code, 404) | |
def test_new_topic_url_resolves_new_topic_view(self): | |
view = resolve('/boards/1/new/') | |
self.assertEquals(view.func, new_topic) | |
def test_new_topic_view_contains_link_back_to_board_topics_view(self): | |
new_topic_url = reverse('new_topic', kwargs={'pk': 1}) | |
board_topics_url = reverse('board_topics', kwargs={'pk': 1}) | |
response = self.client.get(new_topic_url) | |
self.assertContains(response, 'href="{0}"'.format(board_topics_url)) | |
def test_csrf(self): | |
url = reverse('new_topic', kwargs={'pk': 1}) | |
response = self.client.get(url) | |
self.assertContains(response, 'csrfmiddlewaretoken') | |
def test_contains_form(self): | |
url = reverse('new_topic', kwargs={'pk': 1}) | |
response = self.client.get(url) | |
form = response.context.get('form') | |
self.assertIsInstance(form, NewTopicForm) | |
def test_new_topic_valid_post_data(self): | |
url = reverse('new_topic', kwargs={'pk': 1}) | |
data = { | |
'subject': 'Test title', | |
'message': 'Lorem ipsum dolor sit amet' | |
} | |
self.client.post(url, data) | |
self.assertTrue(Topic.objects.exists()) | |
self.assertTrue(Post.objects.exists()) | |
def test_new_topic_invalid_post_data(self): | |
''' | |
Invalid post data should not redirect | |
The expected behavior is to show the form again with validation errors | |
''' | |
url = reverse('new_topic', kwargs={'pk': 1}) | |
response = self.client.post(url, {}) | |
form = response.context.get('form') | |
self.assertEquals(response.status_code, 200) | |
self.assertTrue(form.errors) | |
def test_new_topic_invalid_post_data_empty_fields(self): | |
''' | |
Invalid post data should not redirect | |
The expected behavior is to show the form again with validation errors | |
''' | |
url = reverse('new_topic', kwargs={'pk': 1}) | |
data = { | |
'subject': '', | |
'message': '' | |
} | |
response = self.client.post(url, data) | |
self.assertEquals(response.status_code, 200) | |
self.assertFalse(Topic.objects.exists()) | |
self.assertFalse(Post.objects.exists()) | |
class LoginRequiredNewTopicTests(TestCase): | |
def setUp(self): | |
Board.objects.create(name='Django', description='Django board.') | |
self.url = reverse('new_topic', kwargs={'pk': 1}) | |
self.response = self.client.get(self.url) | |
def test_redirection(self): | |
login_url = reverse('login') | |
self.assertRedirects(self.response, '{login_url}?next={url}'.format(login_url=login_url, url=self.url)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment