PageRenderTime 23ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/modeltests/m2m_and_m2o/tests.py

https://code.google.com/p/mango-py/
Python | 75 lines | 65 code | 8 blank | 2 comment | 0 complexity | f19dccf8c57c4e153f4f3a0d4a234e9e MD5 | raw file
Possible License(s): BSD-3-Clause
  1. from django.db.models import Q
  2. from django.test import TestCase
  3. from models import Issue, User
  4. class RelatedObjectTests(TestCase):
  5. def test_m2m_and_m2o(self):
  6. r = User.objects.create(username="russell")
  7. g = User.objects.create(username="gustav")
  8. i1 = Issue(num=1)
  9. i1.client = r
  10. i1.save()
  11. i2 = Issue(num=2)
  12. i2.client = r
  13. i2.save()
  14. i2.cc.add(r)
  15. i3 = Issue(num=3)
  16. i3.client = g
  17. i3.save()
  18. i3.cc.add(r)
  19. self.assertQuerysetEqual(
  20. Issue.objects.filter(client=r.id), [
  21. 1,
  22. 2,
  23. ],
  24. lambda i: i.num
  25. )
  26. self.assertQuerysetEqual(
  27. Issue.objects.filter(client=g.id), [
  28. 3,
  29. ],
  30. lambda i: i.num
  31. )
  32. self.assertQuerysetEqual(
  33. Issue.objects.filter(cc__id__exact=g.id), []
  34. )
  35. self.assertQuerysetEqual(
  36. Issue.objects.filter(cc__id__exact=r.id), [
  37. 2,
  38. 3,
  39. ],
  40. lambda i: i.num
  41. )
  42. # These queries combine results from the m2m and the m2o relationships.
  43. # They're three ways of saying the same thing.
  44. self.assertQuerysetEqual(
  45. Issue.objects.filter(Q(cc__id__exact = r.id) | Q(client=r.id)), [
  46. 1,
  47. 2,
  48. 3,
  49. ],
  50. lambda i: i.num
  51. )
  52. self.assertQuerysetEqual(
  53. Issue.objects.filter(cc__id__exact=r.id) | Issue.objects.filter(client=r.id), [
  54. 1,
  55. 2,
  56. 3,
  57. ],
  58. lambda i: i.num
  59. )
  60. self.assertQuerysetEqual(
  61. Issue.objects.filter(Q(client=r.id) | Q(cc__id__exact=r.id)), [
  62. 1,
  63. 2,
  64. 3,
  65. ],
  66. lambda i: i.num
  67. )