Add unit tests for usage feature

This commit is contained in:
Tom Talbot 2014-07-10 16:09:42 +01:00
parent ae0d26e71b
commit 4824286d31
6 changed files with 198 additions and 31 deletions

View file

@ -562,6 +562,14 @@
"submit_time": "2014-01-01T12:00:00.000Z"
}
},
{
"pk": 1,
"model": "tests.AdvertPlacement",
"fields": {
"page": 2,
"advert": 1
}
},
{
"pk": 1,
"model": "tests.advert",
@ -578,17 +586,6 @@
"created_at": "2014-01-01T12:00:00.000Z"
}
},
{
"pk": 1,
"model": "wagtailimages.Image",
"fields": {
"title": "test image",
"created_at": "2014-01-01T12:00:00.000Z",
"width": 0,
"height": 0
}
},
{
"pk": 1,
"model": "wagtailcore.pageviewrestriction",

View file

@ -273,9 +273,11 @@ FormPage.content_panels = [
]
# Snippets
# Snippets
class AdvertPlacement(models.Model):
page = ParentalKey('wagtailcore.Page', related_name='advert_placements')
advert = models.ForeignKey('tests.Advert', related_name='+')
@python_2_unicode_compatible
class Advert(models.Model):

View file

@ -3,10 +3,8 @@ from django.core.urlresolvers import reverse
from django.core import mail
from wagtail.tests.utils import WagtailTestUtils
from wagtail.tests.models import EventPage, EventPageRelatedLink
from wagtail.wagtailcore.models import Page
from wagtail.wagtailadmin.tasks import send_email_task
from wagtail.wagtaildocs.models import Document
class TestHome(TestCase, WagtailTestUtils):
@ -46,20 +44,3 @@ class TestSendEmailTask(TestCase):
self.assertEqual(mail.outbox[0].subject, "Test subject")
self.assertEqual(mail.outbox[0].body, "Test content")
self.assertEqual(mail.outbox[0].to, ["nobody@email.com"])
class TestUsageCount(TestCase):
fixtures = ['wagtail/tests/fixtures/test.json']
def test_unused_document_usage_count(self):
doc = Document.objects.get(id=1)
self.assertEqual(doc.usage_count, 0)
def test_used_document_usage_count(self):
doc = Document.objects.get(id=1)
page = EventPage.objects.get(id=4)
event_page_related_link = EventPageRelatedLink()
event_page_related_link.page = page
event_page_related_link.link_document = doc
event_page_related_link.save()
self.assertEqual(doc.usage_count, 1)

View file

@ -5,10 +5,14 @@ from django.test import TestCase
from django.contrib.auth.models import User, Group, Permission
from django.core.urlresolvers import reverse
from django.core.files.base import ContentFile
from django.test.utils import override_settings
from wagtail.wagtaildocs import models
from wagtail.tests.utils import WagtailTestUtils
from wagtail.tests.models import EventPage, EventPageRelatedLink
from wagtail.wagtaildocs.models import Document
# TODO: Test serve view
@ -313,3 +317,103 @@ class TestDocumentFilenameProperties(TestCase):
def tearDown(self):
self.document.delete()
self.extensionless_document.delete()
class TestUsageCount(TestCase, WagtailTestUtils):
fixtures = ['wagtail/tests/fixtures/test.json']
def setUp(self):
self.login()
def test_document_usage_count_not_enabled(self):
doc = Document.objects.get(id=1)
self.assertEqual(doc.usage_count, None)
@override_settings(USAGE_COUNT=True)
def test_unused_document_usage_count(self):
doc = Document.objects.get(id=1)
self.assertEqual(doc.usage_count, 0)
@override_settings(USAGE_COUNT=True)
def test_used_document_usage_count(self):
doc = Document.objects.get(id=1)
page = EventPage.objects.get(id=4)
event_page_related_link = EventPageRelatedLink()
event_page_related_link.page = page
event_page_related_link.link_document = doc
event_page_related_link.save()
self.assertEqual(doc.usage_count, 1)
def test_usage_count_does_not_appear(self):
doc = Document.objects.get(id=1)
page = EventPage.objects.get(id=4)
event_page_related_link = EventPageRelatedLink()
event_page_related_link.page = page
event_page_related_link.link_document = doc
event_page_related_link.save()
response = self.client.get(reverse('wagtaildocs_edit_document',
args=(1,)))
self.assertNotContains(response, 'Used 1 Time')
@override_settings(USAGE_COUNT=True)
def test_usage_count_appears(self):
doc = Document.objects.get(id=1)
page = EventPage.objects.get(id=4)
event_page_related_link = EventPageRelatedLink()
event_page_related_link.page = page
event_page_related_link.link_document = doc
event_page_related_link.save()
response = self.client.get(reverse('wagtaildocs_edit_document',
args=(1,)))
self.assertContains(response, 'Used 1 Time')
@override_settings(USAGE_COUNT=True)
def test_usage_count_zero_appears(self):
response = self.client.get(reverse('wagtaildocs_edit_document',
args=(1,)))
self.assertContains(response, 'Used 0 Times')
class TestUsedBy(TestCase, WagtailTestUtils):
fixtures = ['wagtail/tests/fixtures/test.json']
def setUp(self):
self.login()
def test_document_used_by_not_enabled(self):
doc = Document.objects.get(id=1)
self.assertEqual(doc.used_by, [])
@override_settings(USAGE_COUNT=True)
def test_unused_document_used_by(self):
doc = Document.objects.get(id=1)
self.assertEqual(doc.used_by, [])
@override_settings(USAGE_COUNT=True)
def test_used_document_used_by(self):
doc = Document.objects.get(id=1)
page = EventPage.objects.get(id=4)
event_page_related_link = EventPageRelatedLink()
event_page_related_link.page = page
event_page_related_link.link_document = doc
event_page_related_link.save()
self.assertEqual(doc.used_by, [page])
@override_settings(USAGE_COUNT=True)
def test_usage_page(self):
doc = Document.objects.get(id=1)
page = EventPage.objects.get(id=4)
event_page_related_link = EventPageRelatedLink()
event_page_related_link.page = page
event_page_related_link.link_document = doc
event_page_related_link.save()
response = self.client.get(reverse('wagtaildocs_document_usage',
args=(1,)))
self.assertContains(response, 'Christmas')
@override_settings(USAGE_COUNT=True)
def test_usage_page_no_usage(self):
response = self.client.get(reverse('wagtaildocs_document_usage',
args=(1,)))
# There's no usage so there should be no table rows
self.assertRegexpMatches(response.content, '<tbody>(\s|\n)*</tbody>')

View file

@ -2,6 +2,7 @@ from mock import MagicMock
from django.utils import six
from django.test import TestCase
from django.test.utils import override_settings
from django import template
from django.contrib.auth.models import User, Group, Permission
from django.core.urlresolvers import reverse
@ -17,6 +18,8 @@ from wagtail.wagtailimages.formats import (
from wagtail.wagtailimages.backends import get_image_backend
from wagtail.wagtailimages.backends.pillow import PillowBackend
from wagtail.tests.models import EventPage, EventPageCarouselItem
def get_test_image_file():
from six import BytesIO
@ -470,3 +473,55 @@ class TestFormat(TestCase):
register_image_format(self.format)
result = get_image_format('test name')
self.assertEqual(result, self.format)
class TestUsageCount(TestCase):
fixtures = ['wagtail/tests/fixtures/test.json']
def setUp(self):
self.image = Image.objects.create(
title="Test image",
file=get_test_image_file(),
)
def test_image_usage_count_not_enabled(self):
self.assertEqual(self.image.usage_count, None)
@override_settings(USAGE_COUNT=True)
def test_unused_image_usage_count(self):
self.assertEqual(self.image.usage_count, 0)
@override_settings(USAGE_COUNT=True)
def test_used_image_document_usage_count(self):
page = EventPage.objects.get(id=4)
event_page_carousel_item = EventPageCarouselItem()
event_page_carousel_item.page = page
event_page_carousel_item.image = self.image
event_page_carousel_item.save()
self.assertEqual(self.image.usage_count, 1)
class TestUsedBy(TestCase):
fixtures = ['wagtail/tests/fixtures/test.json']
def setUp(self):
self.image = Image.objects.create(
title="Test image",
file=get_test_image_file(),
)
def test_image_used_by_not_enabled(self):
self.assertEqual(self.image.used_by, [])
@override_settings(USAGE_COUNT=True)
def test_unused_image_used_by(self):
self.assertEqual(self.image.used_by, [])
@override_settings(USAGE_COUNT=True)
def test_used_image_document_used_by(self):
page = EventPage.objects.get(id=4)
event_page_carousel_item = EventPageCarouselItem()
event_page_carousel_item.page = page
event_page_carousel_item.image = self.image
event_page_carousel_item.save()
self.assertEqual(self.image.used_by, [page])

View file

@ -2,6 +2,7 @@ from django.test import TestCase
from django.core.urlresolvers import reverse
from wagtail.tests.utils import WagtailTestUtils
from django.test.utils import override_settings
from wagtail.tests.models import Advert, AlphaSnippet, ZuluSnippet
from wagtail.wagtailsnippets.models import register_snippet, SNIPPET_MODELS
@ -9,6 +10,7 @@ from wagtail.wagtailsnippets.views.snippets import (
get_snippet_edit_handler
)
from wagtail.wagtailsnippets.edit_handlers import SnippetChooserPanel
from wagtail.wagtailcore.models import Page
class TestSnippetIndexView(TestCase, WagtailTestUtils):
@ -185,3 +187,29 @@ class TestSnippetOrdering(TestCase):
# may get registered elsewhere during test
self.assertLess(SNIPPET_MODELS.index(AlphaSnippet),
SNIPPET_MODELS.index(ZuluSnippet))
class TestUsageCount(TestCase):
fixtures = ['wagtail/tests/fixtures/test.json']
def test_snippet_usage_count_not_enabled(self):
advert = Advert.objects.get(id=1)
self.assertEqual(advert.usage_count(), None)
@override_settings(USAGE_COUNT=True)
def test_snippet_usage_count(self):
advert = Advert.objects.get(id=1)
self.assertEqual(advert.usage_count(), 1)
class TestUsedBy(TestCase):
fixtures = ['wagtail/tests/fixtures/test.json']
def test_snippet_used_by_not_enabled(self):
advert = Advert.objects.get(id=1)
self.assertEqual(advert.used_by(), [])
@override_settings(USAGE_COUNT=True)
def test_snippet_used_by(self):
advert = Advert.objects.get(id=1)
self.assertEqual(type(advert.used_by()[0]), Page)