Skip to content

Commit c9fe925

Browse files
committed
test(breads): add ordering and sort_order field tests (#565)
1 parent a201113 commit c9fe925

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

bakerydemo/breads/tests.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
from django.test import TestCase
2+
3+
from bakerydemo.breads.models import BreadIngredient, Country
4+
5+
6+
class CountryModelTest(TestCase):
7+
"""Test Country model ordering and sort_order field."""
8+
9+
def test_country_has_sort_order_field(self):
10+
"""Test that Country model has sort_order field."""
11+
country = Country(title="Test Country", sort_order=10)
12+
country.save()
13+
self.assertEqual(country.sort_order, 10)
14+
15+
def test_country_ordering_respects_sort_order(self):
16+
"""Test that Country model ordering includes sort_order."""
17+
Country.objects.create(title="Country A", sort_order=20)
18+
Country.objects.create(title="Country B", sort_order=10)
19+
Country.objects.create(title="Country C", sort_order=30)
20+
21+
countries = list(Country.objects.all())
22+
self.assertEqual(countries[0].title, "Country B")
23+
self.assertEqual(countries[1].title, "Country A")
24+
self.assertEqual(countries[2].title, "Country C")
25+
26+
def test_country_ordering_with_null_sort_order(self):
27+
"""Test that Country with null sort_order is ordered by title."""
28+
Country.objects.create(title="AAA", sort_order=None)
29+
Country.objects.create(title="BBB", sort_order=10)
30+
Country.objects.create(title="CCC", sort_order=None)
31+
32+
countries = list(Country.objects.all())
33+
# NULL sort_order values come first in SQL, then ordered by title
34+
# Then items with sort_order
35+
self.assertEqual(countries[0].title, "AAA")
36+
self.assertEqual(countries[1].title, "CCC")
37+
self.assertEqual(countries[2].title, "BBB")
38+
39+
40+
class BreadIngredientModelTest(TestCase):
41+
"""Test BreadIngredient model ordering and sort_order field."""
42+
43+
def test_ingredient_has_sort_order_field(self):
44+
"""Test that BreadIngredient model has sort_order field."""
45+
ingredient = BreadIngredient(name="Test Ingredient", sort_order=10)
46+
ingredient.save()
47+
self.assertEqual(ingredient.sort_order, 10)
48+
49+
def test_ingredient_ordering_respects_sort_order(self):
50+
"""Test that BreadIngredient model ordering includes sort_order."""
51+
BreadIngredient.objects.create(name="Ingredient A", sort_order=20)
52+
BreadIngredient.objects.create(name="Ingredient B", sort_order=10)
53+
BreadIngredient.objects.create(name="Ingredient C", sort_order=30)
54+
55+
ingredients = list(BreadIngredient.objects.all())
56+
self.assertEqual(ingredients[0].name, "Ingredient B")
57+
self.assertEqual(ingredients[1].name, "Ingredient A")
58+
self.assertEqual(ingredients[2].name, "Ingredient C")
59+
60+
def test_ingredient_ordering_with_null_sort_order(self):
61+
"""Test that BreadIngredient with null sort_order is ordered by name."""
62+
BreadIngredient.objects.create(name="AAA", sort_order=None)
63+
BreadIngredient.objects.create(name="BBB", sort_order=10)
64+
BreadIngredient.objects.create(name="CCC", sort_order=None)
65+
66+
ingredients = list(BreadIngredient.objects.all())
67+
# NULL sort_order values come first in SQL, then ordered by name
68+
# Then items with sort_order
69+
self.assertEqual(ingredients[0].name, "AAA")
70+
self.assertEqual(ingredients[1].name, "CCC")
71+
self.assertEqual(ingredients[2].name, "BBB")

0 commit comments

Comments
 (0)