mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Added tests for NaturalOrderByManager
This commit is contained in:
@ -0,0 +1,192 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
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',
|
||||
])
|
||||
|
Reference in New Issue
Block a user