PageRenderTime 34434ms CodeModel.GetById 83ms RepoModel.GetById 16ms app.codeStats 0ms

/tests/regressiontests/select_related_onetoone/tests.py

https://code.google.com/p/mango-py/
Python | 90 lines | 76 code | 14 blank | 0 comment | 0 complexity | 46bf9c55392355bb871763ab04452209 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. from django import db
  2. from django.conf import settings
  3. from django.test import TestCase
  4. from models import (User, UserProfile, UserStat, UserStatResult, StatDetails,
  5. AdvancedUserStat, Image, Product)
  6. class ReverseSelectRelatedTestCase(TestCase):
  7. def setUp(self):
  8. user = User.objects.create(username="test")
  9. userprofile = UserProfile.objects.create(user=user, state="KS",
  10. city="Lawrence")
  11. results = UserStatResult.objects.create(results='first results')
  12. userstat = UserStat.objects.create(user=user, posts=150,
  13. results=results)
  14. details = StatDetails.objects.create(base_stats=userstat, comments=259)
  15. user2 = User.objects.create(username="bob")
  16. results2 = UserStatResult.objects.create(results='moar results')
  17. advstat = AdvancedUserStat.objects.create(user=user2, posts=200, karma=5,
  18. results=results2)
  19. StatDetails.objects.create(base_stats=advstat, comments=250)
  20. def test_basic(self):
  21. def test():
  22. u = User.objects.select_related("userprofile").get(username="test")
  23. self.assertEqual(u.userprofile.state, "KS")
  24. self.assertNumQueries(1, test)
  25. def test_follow_next_level(self):
  26. def test():
  27. u = User.objects.select_related("userstat__results").get(username="test")
  28. self.assertEqual(u.userstat.posts, 150)
  29. self.assertEqual(u.userstat.results.results, 'first results')
  30. self.assertNumQueries(1, test)
  31. def test_follow_two(self):
  32. def test():
  33. u = User.objects.select_related("userprofile", "userstat").get(username="test")
  34. self.assertEqual(u.userprofile.state, "KS")
  35. self.assertEqual(u.userstat.posts, 150)
  36. self.assertNumQueries(1, test)
  37. def test_follow_two_next_level(self):
  38. def test():
  39. u = User.objects.select_related("userstat__results", "userstat__statdetails").get(username="test")
  40. self.assertEqual(u.userstat.results.results, 'first results')
  41. self.assertEqual(u.userstat.statdetails.comments, 259)
  42. self.assertNumQueries(1, test)
  43. def test_forward_and_back(self):
  44. def test():
  45. stat = UserStat.objects.select_related("user__userprofile").get(user__username="test")
  46. self.assertEqual(stat.user.userprofile.state, 'KS')
  47. self.assertEqual(stat.user.userstat.posts, 150)
  48. self.assertNumQueries(1, test)
  49. def test_back_and_forward(self):
  50. def test():
  51. u = User.objects.select_related("userstat").get(username="test")
  52. self.assertEqual(u.userstat.user.username, 'test')
  53. self.assertNumQueries(1, test)
  54. def test_not_followed_by_default(self):
  55. def test():
  56. u = User.objects.select_related().get(username="test")
  57. self.assertEqual(u.userstat.posts, 150)
  58. self.assertNumQueries(2, test)
  59. def test_follow_from_child_class(self):
  60. def test():
  61. stat = AdvancedUserStat.objects.select_related('user', 'statdetails').get(posts=200)
  62. self.assertEqual(stat.statdetails.comments, 250)
  63. self.assertEqual(stat.user.username, 'bob')
  64. self.assertNumQueries(1, test)
  65. def test_follow_inheritance(self):
  66. def test():
  67. stat = UserStat.objects.select_related('user', 'advanceduserstat').get(posts=200)
  68. self.assertEqual(stat.advanceduserstat.posts, 200)
  69. self.assertEqual(stat.user.username, 'bob')
  70. self.assertEqual(stat.advanceduserstat.user.username, 'bob')
  71. self.assertNumQueries(1, test)
  72. def test_nullable_relation(self):
  73. im = Image.objects.create(name="imag1")
  74. p1 = Product.objects.create(name="Django Plushie", image=im)
  75. p2 = Product.objects.create(name="Talking Django Plushie")
  76. self.assertEqual(len(Product.objects.select_related("image")), 2)