model_tests.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. from decimal import Decimal
  2. from django.contrib.auth.models import User
  3. from django.test import TestCase
  4. from catalog.constants import INSTATE, REGULAR
  5. from catalog.models import Book, Movie, Map, Subscription
  6. class ItemFixture(TestCase):
  7. @property
  8. def data(self):
  9. # basic item data
  10. return {
  11. 'title':'mytitle',
  12. 'description': 'mydescription',
  13. 'synopsis': 'mysynopsis',
  14. # todo image
  15. 'price': Decimal(5.00),
  16. 'shipping_cost': Decimal(5.00),
  17. 'shipping_cost_multiple': 1,
  18. 'created_by': self.user,
  19. 'last_updated_by': self.user}
  20. @property
  21. def user(self):
  22. return User.objects.get_or_create(username='test_user')[0]
  23. class BookFixture(ItemFixture):
  24. @property
  25. def book_data(self):
  26. data = self.data
  27. data.update({
  28. 'authors': 'john',
  29. 'illustrator': 'john',
  30. 'publisher': 'john',
  31. 'printer': 'john',
  32. 'publish_date': '2007',
  33. 'edition': 'first',
  34. 'features': 'my features',
  35. 'dimensions': '46"x25"',
  36. 'pages': 433,
  37. 'isbn': '123456789',
  38. 'library_of_congress_number': '987654321',
  39. 'genre': 'horror'})
  40. return data
  41. class IsValidBook(BookFixture):
  42. def setUp(self):
  43. self.result = Book.objects.get_or_create(defaults=self.book_data)[0]
  44. def test(self):
  45. self.assertIsNotNone(self.result)
  46. class MovieFixture(ItemFixture):
  47. @property
  48. def movie_data(self):
  49. data = self.data
  50. data.update({
  51. 'producer': 'john',
  52. 'music': 'john',
  53. 'runtime_minutes': 120,
  54. 'format': 'john',
  55. 'region': 'US',
  56. 'sound': 'yes',
  57. 'language': 'english',
  58. 'captioning': 'english',
  59. 'genre': 'horror'})
  60. return data
  61. class IsValidMovie(MovieFixture):
  62. def setUp(self):
  63. self.result = Movie.objects.get_or_create(defaults=self.movie_data)
  64. def test(self):
  65. self.assertIsNotNone(self.result)
  66. class MapFixture(ItemFixture):
  67. @property
  68. def map_data(self):
  69. data = self.data
  70. data.update({'dimensions': '46"x25"'})
  71. return data
  72. class IsValidMap(MapFixture):
  73. def setUp(self):
  74. self.result = Map.objects.get_or_create(defaults=self.map_data)
  75. def test(self):
  76. self.assertIsNotNone(self.result)
  77. class SubscriptionFixture(ItemFixture):
  78. @property
  79. def subscription_data(self):
  80. data = self.data
  81. data.update({
  82. 'shipping_type': INSTATE,
  83. 'shipping_method': REGULAR,
  84. 'duration': 9})
  85. return data
  86. class IsValidSubscription(SubscriptionFixture):
  87. def setUp(self):
  88. self.result = Subscription.objects.get_or_create(
  89. defaults=self.subscription_data)[0]
  90. def test(self):
  91. self.assertIsNotNone(self.result)