Add tests for M2MFieldComparison

pull/3275/merge
Matt Westcott 2017-02-05 18:22:51 +00:00
rodzic 04ac43205b
commit c18cbc76e4
2 zmienionych plików z 45 dodań i 1 usunięć

Wyświetl plik

@ -197,6 +197,7 @@ class EventPageSpeaker(Orderable, LinkFields):
]
@python_2_unicode_compatible
class EventCategory(models.Model):
name = models.CharField("Name", max_length=255)

Wyświetl plik

@ -7,7 +7,7 @@ from django.utils.functional import curry
from django.utils.safestring import SafeText
from wagtail.tests.testapp.models import (
EventPage, EventPageSpeaker, SimplePage, StreamPage, TaggedPage)
EventCategory, EventPage, EventPageSpeaker, SimplePage, StreamPage, TaggedPage)
from wagtail.wagtailadmin import compare
from wagtail.wagtailcore.blocks import StreamValue
from wagtail.wagtailimages import get_image_model
@ -255,6 +255,49 @@ class TestTagsFieldComparison(TestCase):
self.assertTrue(comparison.has_changed())
class TestM2MFieldComparison(TestCase):
fixtures = ['test.json']
comparison_class = compare.M2MFieldComparison
def setUp(self):
self.meetings_category = EventCategory.objects.create(name='Meetings')
self.parties_category = EventCategory.objects.create(name='Parties')
self.holidays_category = EventCategory.objects.create(name='Holidays')
def test_hasnt_changed(self):
christmas_event = EventPage.objects.get(url_path='/home/events/christmas/')
saint_patrick_event = EventPage.objects.get(url_path='/home/events/saint-patrick/')
christmas_event.categories = [self.meetings_category, self.parties_category]
saint_patrick_event.categories = [self.meetings_category, self.parties_category]
comparison = self.comparison_class(
EventPage._meta.get_field('categories'), christmas_event, saint_patrick_event
)
self.assertTrue(comparison.is_field)
self.assertFalse(comparison.is_child_relation)
self.assertEqual(comparison.field_label(), "Categories")
self.assertFalse(comparison.has_changed())
self.assertEqual(comparison.htmldiff(), 'Meetings, Parties')
self.assertIsInstance(comparison.htmldiff(), SafeText)
def test_has_changed(self):
christmas_event = EventPage.objects.get(url_path='/home/events/christmas/')
saint_patrick_event = EventPage.objects.get(url_path='/home/events/saint-patrick/')
christmas_event.categories = [self.meetings_category, self.parties_category]
saint_patrick_event.categories = [self.meetings_category, self.holidays_category]
comparison = self.comparison_class(
EventPage._meta.get_field('categories'), christmas_event, saint_patrick_event
)
self.assertTrue(comparison.has_changed())
self.assertEqual(comparison.htmldiff(), 'Meetings, <span class="deletion">Parties</span>, <span class="addition">Holidays</span>')
self.assertIsInstance(comparison.htmldiff(), SafeText)
class TestForeignObjectComparison(TestCase):
comparison_class = compare.ForeignObjectComparison