/tests/regressiontests/dates/tests.py

https://code.google.com/p/mango-py/ · Python · 81 lines · 74 code · 7 blank · 0 comment · 0 complexity · ce03898d9efe01389f4f382a56619f97 MD5 · raw file

  1. from datetime import datetime
  2. from django.test import TestCase
  3. from models import Article, Comment, Category
  4. class DatesTests(TestCase):
  5. def test_related_model_traverse(self):
  6. a1 = Article.objects.create(
  7. title="First one",
  8. pub_date=datetime(2005, 7, 28),
  9. )
  10. a2 = Article.objects.create(
  11. title="Another one",
  12. pub_date=datetime(2010, 7, 28),
  13. )
  14. a3 = Article.objects.create(
  15. title="Third one, in the first day",
  16. pub_date=datetime(2005, 7, 28),
  17. )
  18. a1.comments.create(
  19. text="Im the HULK!",
  20. pub_date=datetime(2005, 7, 28),
  21. )
  22. a1.comments.create(
  23. text="HULK SMASH!",
  24. pub_date=datetime(2005, 7, 29),
  25. )
  26. a2.comments.create(
  27. text="LMAO",
  28. pub_date=datetime(2010, 7, 28),
  29. )
  30. a3.comments.create(
  31. text="+1",
  32. pub_date=datetime(2005, 8, 29),
  33. )
  34. c = Category.objects.create(name="serious-news")
  35. c.articles.add(a1, a3)
  36. self.assertQuerysetEqual(
  37. Comment.objects.dates("article__pub_date", "year"), [
  38. datetime(2005, 1, 1),
  39. datetime(2010, 1, 1),
  40. ],
  41. lambda d: d,
  42. )
  43. self.assertQuerysetEqual(
  44. Comment.objects.dates("article__pub_date", "month"), [
  45. datetime(2005, 7, 1),
  46. datetime(2010, 7, 1),
  47. ],
  48. lambda d: d
  49. )
  50. self.assertQuerysetEqual(
  51. Comment.objects.dates("article__pub_date", "day"), [
  52. datetime(2005, 7, 28),
  53. datetime(2010, 7, 28),
  54. ],
  55. lambda d: d
  56. )
  57. self.assertQuerysetEqual(
  58. Article.objects.dates("comments__pub_date", "day"), [
  59. datetime(2005, 7, 28),
  60. datetime(2005, 7, 29),
  61. datetime(2005, 8, 29),
  62. datetime(2010, 7, 28),
  63. ],
  64. lambda d: d
  65. )
  66. self.assertQuerysetEqual(
  67. Article.objects.dates("comments__approval_date", "day"), []
  68. )
  69. self.assertQuerysetEqual(
  70. Category.objects.dates("articles__pub_date", "day"), [
  71. datetime(2005, 7, 28),
  72. ],
  73. lambda d: d,
  74. )