1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

191 lines
4.6 KiB
Python
Raw Normal View History

2018-06-08 15:42:10 -04:00
from django.test import TestCase
from dcim.models import Site
class NaturalOrderByManagerTest(TestCase):
"""
Ensure consistent natural ordering given myriad sample data. We use dcim.Site as our guinea pig because it's simple.
"""
def setUp(self):
return
def evaluate_ordering(self, names):
# Create the Sites
Site.objects.bulk_create(
Site(name=name, slug=name.lower()) for name in names
)
# Validate forward ordering
self.assertEqual(
names,
list(Site.objects.values_list('name', flat=True))
)
# Validate reverse ordering
self.assertEqual(
list(reversed(names)),
list(Site.objects.reverse().values_list('name', flat=True))
)
def test_leading_digits(self):
self.evaluate_ordering([
'1Alpha',
'1Bravo',
'1Charlie',
'9Alpha',
'9Bravo',
'9Charlie',
'10Alpha',
'10Bravo',
'10Charlie',
'99Alpha',
'99Bravo',
'99Charlie',
'100Alpha',
'100Bravo',
'100Charlie',
'999Alpha',
'999Bravo',
'999Charlie',
])
def test_trailing_digits(self):
self.evaluate_ordering([
'Alpha1',
'Alpha9',
'Alpha10',
'Alpha99',
'Alpha100',
'Alpha999',
'Bravo1',
'Bravo9',
'Bravo10',
'Bravo99',
'Bravo100',
'Bravo999',
'Charlie1',
'Charlie9',
'Charlie10',
'Charlie99',
'Charlie100',
'Charlie999',
])
def test_leading_and_trailing_digits(self):
self.evaluate_ordering([
'1Alpha1',
'1Alpha9',
'1Alpha10',
'1Alpha99',
'1Alpha100',
'1Alpha999',
'1Bravo1',
'1Bravo9',
'1Bravo10',
'1Bravo99',
'1Bravo100',
'1Bravo999',
'1Charlie1',
'1Charlie9',
'1Charlie10',
'1Charlie99',
'1Charlie100',
'1Charlie999',
'9Alpha1',
'9Alpha9',
'9Alpha10',
'9Alpha99',
'9Alpha100',
'9Alpha999',
'9Bravo1',
'9Bravo9',
'9Bravo10',
'9Bravo99',
'9Bravo100',
'9Bravo999',
'9Charlie1',
'9Charlie9',
'9Charlie10',
'9Charlie99',
'9Charlie100',
'9Charlie999',
'10Alpha1',
'10Alpha9',
'10Alpha10',
'10Alpha99',
'10Alpha100',
'10Alpha999',
'10Bravo1',
'10Bravo9',
'10Bravo10',
'10Bravo99',
'10Bravo100',
'10Bravo999',
'10Charlie1',
'10Charlie9',
'10Charlie10',
'10Charlie99',
'10Charlie100',
'10Charlie999',
'99Alpha1',
'99Alpha9',
'99Alpha10',
'99Alpha99',
'99Alpha100',
'99Alpha999',
'99Bravo1',
'99Bravo9',
'99Bravo10',
'99Bravo99',
'99Bravo100',
'99Bravo999',
'99Charlie1',
'99Charlie9',
'99Charlie10',
'99Charlie99',
'99Charlie100',
'99Charlie999',
'100Alpha1',
'100Alpha9',
'100Alpha10',
'100Alpha99',
'100Alpha100',
'100Alpha999',
'100Bravo1',
'100Bravo9',
'100Bravo10',
'100Bravo99',
'100Bravo100',
'100Bravo999',
'100Charlie1',
'100Charlie9',
'100Charlie10',
'100Charlie99',
'100Charlie100',
'100Charlie999',
'999Alpha1',
'999Alpha9',
'999Alpha10',
'999Alpha99',
'999Alpha100',
'999Alpha999',
'999Bravo1',
'999Bravo9',
'999Bravo10',
'999Bravo99',
'999Bravo100',
'999Bravo999',
'999Charlie1',
'999Charlie9',
'999Charlie10',
'999Charlie99',
'999Charlie100',
'999Charlie999',
])