|
|
@@ -0,0 +1,36 @@
|
|
|
+from django.template import Context, Template
|
|
|
+from django.test import TestCase
|
|
|
+
|
|
|
+from dcim.models import Site
|
|
|
+from utilities.tables import BaseTable, TagColumn
|
|
|
+from utilities.testing import create_tags
|
|
|
+
|
|
|
+
|
|
|
+class TagColumnTable(BaseTable):
|
|
|
+ tags = TagColumn(url_name='dcim:site_list')
|
|
|
+
|
|
|
+ class Meta(BaseTable.Meta):
|
|
|
+ model = Site
|
|
|
+ fields = ('pk', 'name', 'tags',)
|
|
|
+ default_columns = fields
|
|
|
+
|
|
|
+
|
|
|
+class TagColumnTest(TestCase):
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def setUpTestData(cls):
|
|
|
+ tags = create_tags('Alpha', 'Bravo', 'Charlie')
|
|
|
+
|
|
|
+ sites = [
|
|
|
+ Site(name=f'Site {i}', slug=f'site-{i}') for i in range(1, 6)
|
|
|
+ ]
|
|
|
+ Site.objects.bulk_create(sites)
|
|
|
+ for site in sites:
|
|
|
+ site.tags.add(*tags)
|
|
|
+
|
|
|
+ def test_tagcolumn(self):
|
|
|
+ template = Template('{% load render_table from django_tables2 %}{% render_table table %}')
|
|
|
+ context = Context({
|
|
|
+ 'table': TagColumnTable(Site.objects.all(), orderable=False)
|
|
|
+ })
|
|
|
+ template.render(context)
|