diff --git a/wagtail/wagtailadmin/tests/test_compare.py b/wagtail/wagtailadmin/tests/test_compare.py
index 4fff842674..ff113590fe 100644
--- a/wagtail/wagtailadmin/tests/test_compare.py
+++ b/wagtail/wagtailadmin/tests/test_compare.py
@@ -6,7 +6,7 @@ from django.test import TestCase
from django.utils.functional import curry
from django.utils.safestring import SafeString
-from wagtail.tests.testapp.models import EventPage, EventPageSpeaker, SimplePage, StreamPage
+from wagtail.tests.testapp.models import EventPage, EventPageSpeaker, SimplePage, StreamPage, TaggedPage
from wagtail.wagtailadmin import compare
from wagtail.wagtailcore.blocks import StreamValue
from wagtail.wagtailcore.models import Page
@@ -218,6 +218,43 @@ class TestChoiceFieldComparison(TestCase):
self.assertTrue(comparison.has_changed())
+class TestTagsFieldComparison(TestCase):
+ comparison_class = compare.TagsFieldComparison
+
+ def test_hasnt_changed(self):
+ a = TaggedPage()
+ a.tags.add('wagtail')
+ a.tags.add('bird')
+
+ b = TaggedPage()
+ b.tags.add('wagtail')
+ b.tags.add('bird')
+
+ comparison = self.comparison_class(TaggedPage._meta.get_field('tags'), a, b)
+
+ self.assertTrue(comparison.is_field)
+ self.assertFalse(comparison.is_child_relation)
+ self.assertEqual(comparison.field_label(), "Tags")
+ self.assertEqual(comparison.htmldiff(), 'wagtail, bird')
+ self.assertIsInstance(comparison.htmldiff(), SafeString)
+ self.assertFalse(comparison.has_changed())
+
+ def test_has_changed(self):
+ a = TaggedPage()
+ a.tags.add('wagtail')
+ a.tags.add('bird')
+
+ b = TaggedPage()
+ b.tags.add('wagtail')
+ b.tags.add('motacilla')
+
+ comparison = self.comparison_class(TaggedPage._meta.get_field('tags'), a, b)
+
+ self.assertEqual(comparison.htmldiff(), 'wagtail, bird, motacilla')
+ self.assertIsInstance(comparison.htmldiff(), SafeString)
+ self.assertTrue(comparison.has_changed())
+
+
class TestForeignObjectComparison(TestCase):
comparison_class = compare.ForeignObjectComparison