mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-04-16 13:01:01 +00:00
Unit tests for snippets views
This commit is contained in:
parent
9bbe3f1c19
commit
4e260fb9a1
3 changed files with 157 additions and 19 deletions
|
|
@ -7,6 +7,7 @@ from wagtail.wagtailadmin.edit_handlers import FieldPanel, MultiFieldPanel, Inli
|
|||
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel
|
||||
from wagtail.wagtaildocs.edit_handlers import DocumentChooserPanel
|
||||
from wagtail.wagtailforms.models import AbstractEmailForm, AbstractFormField
|
||||
from wagtail.wagtailsnippets.models import register_snippet
|
||||
|
||||
|
||||
EVENT_AUDIENCE_CHOICES = (
|
||||
|
|
@ -252,3 +253,20 @@ FormPage.content_panels = [
|
|||
FieldPanel('subject', classname="full"),
|
||||
], "Email")
|
||||
]
|
||||
|
||||
|
||||
# Snippets
|
||||
|
||||
class Advert(models.Model):
|
||||
url = models.URLField(null=True, blank=True)
|
||||
text = models.CharField(max_length=255)
|
||||
|
||||
panels = [
|
||||
FieldPanel('url'),
|
||||
FieldPanel('text'),
|
||||
]
|
||||
|
||||
def __unicode__(self):
|
||||
return self.text
|
||||
|
||||
register_snippet(Advert)
|
||||
|
|
|
|||
|
|
@ -1,19 +1,139 @@
|
|||
"""
|
||||
This file demonstrates writing tests using the unittest module. These will pass
|
||||
when you run "manage.py test".
|
||||
|
||||
Replace this with more appropriate tests for your application.
|
||||
"""
|
||||
|
||||
from wagtail.tests.utils import unittest
|
||||
|
||||
from django.test import TestCase
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from wagtail.tests.utils import login, unittest
|
||||
from wagtail.tests.models import Advert
|
||||
|
||||
|
||||
@unittest.skip("Need real tests")
|
||||
class SimpleTest(TestCase):
|
||||
def test_basic_addition(self):
|
||||
"""
|
||||
Tests that 1 + 1 always equals 2.
|
||||
"""
|
||||
self.assertEqual(1 + 1, 2)
|
||||
class TestSnippetIndexView(TestCase):
|
||||
def setUp(self):
|
||||
login(self.client)
|
||||
|
||||
def get(self, params={}):
|
||||
return self.client.get(reverse('wagtailsnippets_index'), params)
|
||||
|
||||
def test_status_code(self):
|
||||
self.assertEqual(self.get().status_code, 200)
|
||||
|
||||
def test_displays_snippet(self):
|
||||
self.assertContains(self.get(), "Adverts")
|
||||
|
||||
|
||||
class TestSnippetListView(TestCase):
|
||||
def setUp(self):
|
||||
login(self.client)
|
||||
|
||||
def get(self, params={}):
|
||||
return self.client.get(reverse('wagtailsnippets_list',
|
||||
args=('tests', 'advert')),
|
||||
params)
|
||||
|
||||
def test_status_code(self):
|
||||
self.assertEqual(self.get().status_code, 200)
|
||||
|
||||
def test_displays_add_button(self):
|
||||
self.assertContains(self.get(), "Add advert")
|
||||
|
||||
|
||||
class TestSnippetCreateView(TestCase):
|
||||
def setUp(self):
|
||||
login(self.client)
|
||||
|
||||
def get(self, params={}):
|
||||
return self.client.get(reverse('wagtailsnippets_create',
|
||||
args=('tests', 'advert')),
|
||||
params)
|
||||
|
||||
def post(self, post_data={}):
|
||||
return self.client.post(reverse('wagtailsnippets_create',
|
||||
args=('tests', 'advert')),
|
||||
post_data)
|
||||
|
||||
def test_status_code(self):
|
||||
self.assertEqual(self.get().status_code, 200)
|
||||
|
||||
def test_create_invalid(self):
|
||||
response = self.post(post_data={'foo': 'bar'})
|
||||
self.assertContains(response, "The snippet could not be created due to errors.")
|
||||
self.assertContains(response, "This field is required.")
|
||||
|
||||
def test_create(self):
|
||||
response = self.post(post_data={'text': 'test_advert',
|
||||
'url': 'http://www.example.com/'})
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
snippets = Advert.objects.filter(text='test_advert')
|
||||
self.assertEqual(snippets.count(), 1)
|
||||
self.assertEqual(snippets.first().url, 'http://www.example.com/')
|
||||
|
||||
|
||||
class TestSnippetEditView(TestCase):
|
||||
def setUp(self):
|
||||
self.test_snippet = Advert()
|
||||
self.test_snippet.text = 'test_advert'
|
||||
self.test_snippet.url = 'http://www.example.com/'
|
||||
self.test_snippet.save()
|
||||
|
||||
login(self.client)
|
||||
|
||||
def get(self, params={}):
|
||||
return self.client.get(reverse('wagtailsnippets_edit',
|
||||
args=('tests', 'advert', self.test_snippet.id)),
|
||||
params)
|
||||
|
||||
def post(self, post_data={}):
|
||||
return self.client.post(reverse('wagtailsnippets_edit',
|
||||
args=('tests', 'advert', self.test_snippet.id)),
|
||||
post_data)
|
||||
|
||||
def test_status_code(self):
|
||||
self.assertEqual(self.get().status_code, 200)
|
||||
|
||||
def test_non_existant_model(self):
|
||||
response = self.client.get(reverse('wagtailsnippets_edit',
|
||||
args=('tests', 'foo', self.test_snippet.id)))
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_nonexistant_id(self):
|
||||
response = self.client.get(reverse('wagtailsnippets_edit',
|
||||
args=('tests', 'advert', 999999)))
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_edit_invalid(self):
|
||||
response = self.post(post_data={'foo': 'bar'})
|
||||
self.assertContains(response, "The snippet could not be saved due to errors.")
|
||||
self.assertContains(response, "This field is required.")
|
||||
|
||||
def test_edit(self):
|
||||
response = self.post(post_data={'text': 'edited_test_advert',
|
||||
'url': 'http://www.example.com/edited'})
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
snippets = Advert.objects.filter(text='edited_test_advert')
|
||||
self.assertEqual(snippets.count(), 1)
|
||||
self.assertEqual(snippets.first().url, 'http://www.example.com/edited')
|
||||
|
||||
|
||||
class TestSnippetDelete(TestCase):
|
||||
def setUp(self):
|
||||
self.test_snippet = Advert()
|
||||
self.test_snippet.text = 'test_advert'
|
||||
self.test_snippet.url = 'http://www.example.com/'
|
||||
self.test_snippet.save()
|
||||
|
||||
login(self.client)
|
||||
|
||||
def test_delete_get(self):
|
||||
response = self.client.get(reverse('wagtailsnippets_delete', args=('tests', 'advert', self.test_snippet.id, )))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_delete_post(self):
|
||||
post_data = {'foo': 'bar'} # For some reason, this test doesn't work without a bit of POST data
|
||||
response = self.client.post(reverse('wagtailsnippets_delete', args=('tests', 'advert', self.test_snippet.id, )), post_data)
|
||||
|
||||
# Should be redirected to explorer page
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
# Check that the page is gone
|
||||
self.assertEqual(Advert.objects.filter(text='test_advert').count(), 0)
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ def create(request, content_type_app_name, content_type_model_name):
|
|||
messages.success(
|
||||
request,
|
||||
_("{snippet_type} '{instance}' created.").format(
|
||||
snippet_type=capfirst(get_snippet_type_name(content_type)[0]),
|
||||
snippet_type=capfirst(get_snippet_type_name(content_type)[0]),
|
||||
instance=instance
|
||||
)
|
||||
)
|
||||
|
|
@ -166,7 +166,7 @@ def edit(request, content_type_app_name, content_type_model_name, id):
|
|||
messages.success(
|
||||
request,
|
||||
_("{snippet_type} '{instance}' updated.").format(
|
||||
snippet_type=capfirst(snippet_type_name),
|
||||
snippet_type=capfirst(snippet_type_name),
|
||||
instance=instance
|
||||
)
|
||||
)
|
||||
|
|
@ -202,7 +202,7 @@ def delete(request, content_type_app_name, content_type_model_name, id):
|
|||
messages.success(
|
||||
request,
|
||||
_("{snippet_type} '{instance}' deleted.").format(
|
||||
snippet_type=capfirst(snippet_type_name),
|
||||
snippet_type=capfirst(snippet_type_name),
|
||||
instance=instance
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue