tests.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from operator import attrgetter
  2. from django.db import models
  3. from django.test import SimpleTestCase, TestCase
  4. from django.test.utils import isolate_apps
  5. from .base_tests import BaseOrderWithRespectToTests
  6. from .models import Answer, Dimension, Entity, Post, Question
  7. class OrderWithRespectToBaseTests(BaseOrderWithRespectToTests, TestCase):
  8. Answer = Answer
  9. Post = Post
  10. Question = Question
  11. class OrderWithRespectToTests(SimpleTestCase):
  12. @isolate_apps("order_with_respect_to")
  13. def test_duplicate_order_field(self):
  14. class Bar(models.Model):
  15. class Meta:
  16. app_label = "order_with_respect_to"
  17. class Foo(models.Model):
  18. bar = models.ForeignKey(Bar, models.CASCADE)
  19. order = models.OrderWrt()
  20. class Meta:
  21. order_with_respect_to = "bar"
  22. app_label = "order_with_respect_to"
  23. count = 0
  24. for field in Foo._meta.local_fields:
  25. if isinstance(field, models.OrderWrt):
  26. count += 1
  27. self.assertEqual(count, 1)
  28. class TestOrderWithRespectToOneToOnePK(TestCase):
  29. def test_set_order(self):
  30. e = Entity.objects.create()
  31. d = Dimension.objects.create(entity=e)
  32. c1 = d.component_set.create()
  33. c2 = d.component_set.create()
  34. d.set_component_order([c1.id, c2.id])
  35. self.assertQuerySetEqual(
  36. d.component_set.all(), [c1.id, c2.id], attrgetter("pk")
  37. )