Guest User

Untitled

a guest
Sep 23rd, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.01 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from decimal import Decimal
  3. from django.test import TestCase
  4. from gp.dish.tests import IngredientParentTest
  5.  
  6. class ProductViewTest(IngredientParentTest, TestCase):
  7. def setUp(self):
  8. super(ProductViewTest, self).setUp()
  9.  
  10. def test_invoice(self):
  11. """
  12. get last 20 invoice
  13. /a/1/supplier/invoice/
  14. """
  15. prefix = '/a/1/supplier/invoice/'
  16. prefix2 = '/a/2/supplier/invoice/'
  17. self.c.login(username='be', password='be')
  18. #create data for testing
  19. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 'SR-12349'}).content, """{"id": 1, "name": "SR-12349"}""")
  20. self.c.login(username='h', password='h')
  21. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix2), {'name': 'SR-44'}).content, """{"id": 2, "name": "SR-44"}""")
  22. self.c.logout()
  23.  
  24. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefix)).status_code, 401)
  25. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  26. self.assertEqual(self.c.get('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 401)
  27. self.assertEqual(self.c.put('{prefix}1/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  28. self.assertEqual(self.c.delete('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 401)
  29. #fake
  30. self.assertEqual(self.c.get('{prefix}111/?format=json'.format(prefix=prefix)).status_code, 401)
  31. self.assertEqual(self.c.put('{prefix}111/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  32. self.assertEqual(self.c.delete('{prefix}111/?format=json'.format(prefix=prefix)).status_code, 401)
  33. #logged
  34. self.c.login(username='be', password='be')
  35. #to not owned
  36. for prefixtmp in [prefix, prefix2,]:
  37. self.assertEqual(self.c.get('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 404)
  38. self.assertEqual(self.c.put('{prefix}2/?format=json'.format(prefix=prefixtmp), {'name': 'Ing'}).status_code, 404)
  39. self.assertEqual(self.c.delete('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 405)
  40. #to group
  41. self.c.login(username='as', password='as')
  42. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 's'}).status_code, 404)
  43. self.assertEqual(self.c.get('{prefix}1/?format=json'.format(prefix=prefix)).content, """{"id": 1, "name": "SR-12349"}""")
  44. self.assertEqual(self.c.put('{prefix}1/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 404)
  45. self.assertEqual(self.c.delete('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 405)
  46. #authorized
  47. self.c.login(username='be', password='be')
  48. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 'B6'}).content, """{"id": 3, "name": "B6"}""")
  49. self.assertEqual(self.c.put('{prefix}3/?format=json'.format(prefix=prefix), {'name': 'B7'}).content, """{"id": 3, "name": "B7"}""")
  50. self.assertEqual(self.c.delete('{prefix}3/?format=json'.format(prefix=prefix)).status_code, 405)
  51. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefix)).content, """[{"id": 3, "name": "B7"}, {"id": 1, "name": "SR-12349"}]""")
  52.  
  53. def test_supplier(self):
  54. """
  55. all suppliers for establishment
  56. /a/1/supplier/supplier/
  57. """
  58. prefix = '/a/1/supplier/'
  59. prefix2 = '/a/2/supplier/'
  60. self.c.login(username='be', password='be')
  61. #create data for testing
  62. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 'SR-12349'}).content, """{"id": 1, "name": "SR-12349"}""")
  63. self.c.login(username='h', password='h')
  64. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix2), {'name': 'SR-44'}).content, """{"id": 2, "name": "SR-44"}""")
  65. self.c.logout()
  66.  
  67. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefix)).status_code, 401)
  68. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  69. self.assertEqual(self.c.get('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 401)
  70. self.assertEqual(self.c.put('{prefix}1/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  71. self.assertEqual(self.c.delete('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 401)
  72. #fake
  73. self.assertEqual(self.c.get('{prefix}111/?format=json'.format(prefix=prefix)).status_code, 401)
  74. self.assertEqual(self.c.put('{prefix}111/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  75. self.assertEqual(self.c.delete('{prefix}111/?format=json'.format(prefix=prefix)).status_code, 401)
  76. #logged
  77. self.c.login(username='be', password='be')
  78. #to not owned
  79. for prefixtmp in [prefix, prefix2,]:
  80. self.assertEqual(self.c.get('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 404)
  81. self.assertEqual(self.c.put('{prefix}2/?format=json'.format(prefix=prefixtmp), {'name': 'Ing'}).status_code, 404)
  82. self.assertEqual(self.c.delete('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 405)
  83. #to group
  84. self.c.login(username='as', password='as')
  85. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix)).status_code, 404)
  86. self.assertEqual(self.c.get('{prefix}1/?format=json'.format(prefix=prefix)).content, """{"id": 1, "name": "SR-12349"}""")
  87. self.assertEqual(self.c.put('{prefix}1/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 404)
  88. self.assertEqual(self.c.delete('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 405)
  89. #authorized
  90. self.c.login(username='be', password='be')
  91. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 'B6'}).content, """{"id": 3, "name": "B6"}""")
  92. self.assertEqual(self.c.put('{prefix}3/?format=json'.format(prefix=prefix), {'name': 'B7'}).content, """{"id": 3, "name": "B7"}""")
  93. self.assertEqual(self.c.delete('{prefix}3/?format=json'.format(prefix=prefix)).status_code, 405)
  94. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefix)).content, """[{"id": 3, "name": "B7"}, {"id": 1, "name": "SR-12349"}]""")
  95.  
  96. def test_product(self):
  97. prefix = '/a/1/supplier/ingredient/1/product/'
  98. prefix2 = '/a/2/supplier/ingredient/1/product/'
  99. self.c.login(username='be', password='be')
  100. #create data for testing
  101. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {"name": "Majas kartupelis", "package": "1", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}).content, """{"id": 1, "name": "Majas kartupelis", "package": "1", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}""")
  102. self.c.login(username='h', password='h')
  103. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix2), {"name": "Ing 4", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}).content, """{"id": 2, "name": "Ing 4", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}""")
  104. self.c.logout()
  105.  
  106. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefix)).status_code, 401)
  107. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  108. self.assertEqual(self.c.get('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 401)
  109. self.assertEqual(self.c.put('{prefix}1/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  110. self.assertEqual(self.c.delete('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 401)
  111. #fake
  112. self.assertEqual(self.c.get('{prefix}111/?format=json'.format(prefix=prefix)).status_code, 401)
  113. self.assertEqual(self.c.put('{prefix}111/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  114. self.assertEqual(self.c.delete('{prefix}111/?format=json'.format(prefix=prefix)).status_code, 401)
  115. #logged
  116. self.c.login(username='be', password='be')
  117. #to not owned
  118. for prefixtmp in [prefix, prefix2,]:
  119. self.assertEqual(self.c.get('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 404)
  120. self.assertEqual(self.c.put('{prefix}2/?format=json'.format(prefix=prefixtmp), {'name': 'Ing'}).status_code, 404)
  121. self.assertEqual(self.c.delete('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 405)
  122. #to group
  123. self.c.login(username='as', password='as')
  124. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix)).status_code, 404)
  125. self.assertEqual(self.c.get('{prefix}1/?format=json'.format(prefix=prefix)).content, """{"id": 1, "name": "Majas kartupelis", "package": "1", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}""")
  126. self.assertEqual(self.c.put('{prefix}1/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 404)
  127. self.assertEqual(self.c.delete('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 405)
  128. #authorized
  129. self.c.login(username='be', password='be')
  130. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {"name": "Ing 46", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}).content, """{"id": 3, "name": "Ing 46", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}""")
  131. self.assertEqual(self.c.get('{prefix}3/?format=json'.format(prefix=prefix)).content, """{"id": 3, "name": "Ing 46", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}""")
  132. self.assertEqual(self.c.put('{prefix}3/?format=json'.format(prefix=prefix), {'name': 'B7', "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}).content, """{"id": 3, "name": "B7", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}""")
  133. self.assertEqual(self.c.delete('{prefix}3/?format=json'.format(prefix=prefix)).status_code, 405)
  134. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefix)).content, """[{"id": 3, "name": "B7", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}, {"id": 1, "name": "Majas kartupelis", "package": "1", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}]""")
  135.  
  136. def test_receive(self):
  137. """
  138. last 20 receive
  139. """
  140. self.c.login(username='be', password='be')
  141. self.assertEqual(self.c.post('/a/1/supplier/invoice/?format=json', {'name': 'SR-12349'}).content, """{"id": 1, "name": "SR-12349"}""")
  142. self.assertEqual(self.c.post('/a/1/supplier/?format=json', {'name': 'SR-12349'}).content, """{"id": 1, "name": "SR-12349"}""")
  143. self.assertEqual(self.c.post('/a/1/supplier/ingredient/1/product/?format=json', {"name": "Majas kartupelis", "package": "1", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}).content, """{"id": 1, "name": "Majas kartupelis", "package": "1", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}""")
  144.  
  145. self.c.login(username='h', password='h')
  146. self.assertEqual(self.c.post('/a/2/supplier/invoice/?format=json', {'name': 'SR-44'}).content, """{"id": 2, "name": "SR-44"}""")
  147. self.assertEqual(self.c.post('/a/2/supplier/?format=json', {'name': 'SR-44'}).content, """{"id": 2, "name": "SR-44"}""")
  148. self.assertEqual(self.c.post('/a/2/supplier/ingredient/1/product/?format=json', {"name": "Ing 4", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}).content, """{"id": 2, "name": "Ing 4", "package": "2", "dropout": "20", "weight": "1", "protein": "2", "fat": "0", "hydrates": "18", "calories": "77"}""")
  149. self.c.logout()
  150.  
  151. prefix = '/a/1/supplier/ingredient/1/receive/'
  152. prefix2 = '/a/2/supplier/ingredient/1/receive/'
  153. prefix3 = '/a/1/supplier/ingredient/4/receive/'
  154. prefix4 = '/a/2/supplier/ingredient/4/receive/'
  155. # create test data
  156. self.c.login(username='be', password='be')
  157. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {"price_nopvn": "0.10656", "price": "0.13", "received": "5", "invoice": 1, "supplier": 1, "product": 1}).content,
  158. """{"id": 1, "price_nopvn": "0.10656", "price": "0.13", "received": "5", "left": "5", "invoice": 1, "invoice__name": "SR-12349", "supplier": 1, "product": 1}""")
  159. self.c.login(username='h', password='h')
  160. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix2), {"price_nopvn": "0.10656", "price": "0.13", "received": "15", "invoice": 2, "supplier": 2, "product": 2}).content,
  161. """{"id": 2, "price_nopvn": "0.10656", "price": "0.13", "received": "15", "left": "15", "invoice": 2, "invoice__name": "SR-44", "supplier": 2, "product": 2}""")
  162. self.c.logout()
  163. #anonymous
  164. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefix)).status_code, 401)
  165. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  166. self.assertEqual(self.c.get('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 401)
  167. self.assertEqual(self.c.put('{prefix}1/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  168. self.assertEqual(self.c.delete('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 401)
  169. #fake
  170. self.assertEqual(self.c.get('{prefix}111/?format=json'.format(prefix=prefix)).status_code, 401)
  171. self.assertEqual(self.c.put('{prefix}111/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 401)
  172. self.assertEqual(self.c.delete('{prefix}111/?format=json'.format(prefix=prefix)).status_code, 401)
  173. #logged
  174. self.c.login(username='be', password='be')
  175. #to not owned
  176. for prefixtmp in [prefix, prefix2,]:
  177. self.assertEqual(self.c.get('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 404)
  178. self.assertEqual(self.c.put('{prefix}2/?format=json'.format(prefix=prefixtmp), {'name': 'Ing'}).status_code, 404)
  179. self.assertEqual(self.c.delete('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 405)
  180. #to group
  181. self.c.login(username='as', password='as')
  182. #to foreign ingredient
  183. for prefixtmp in [prefix3, prefix4,]:
  184. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefixtmp)).status_code, 404)
  185. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefixtmp)).status_code, 404)
  186. self.assertEqual(self.c.get('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 404)
  187. self.assertEqual(self.c.put('{prefix}2/?format=json'.format(prefix=prefixtmp), {'name': 'Ing'}).status_code, 404)
  188. self.assertEqual(self.c.delete('{prefix}2/?format=json'.format(prefix=prefixtmp)).status_code, 405)
  189. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix)).status_code, 404)
  190. self.assertEqual(self.c.get('{prefix}1/?format=json'.format(prefix=prefix)).content, """{"id": 1, "price_nopvn": "0.10656", "price": "0.13", "received": "5", "left": "5", "invoice": 1, "invoice__name": "SR-12349", "supplier": 1, "product": 1}""")
  191. self.assertEqual(self.c.put('{prefix}1/?format=json'.format(prefix=prefix), {'name': 'Ing'}).status_code, 404)
  192. self.assertEqual(self.c.delete('{prefix}1/?format=json'.format(prefix=prefix)).status_code, 405)
  193. #authorized
  194. self.c.login(username='be', password='be')
  195. self.assertEqual(self.c.post('{prefix}?format=json'.format(prefix=prefix), {"price_nopvn": "0.10656", "price": "0.13", "received": "3", "invoice": 1, "supplier": 1, "product": 1}).content, """{"id": 3, "price_nopvn": "0.10656", "price": "0.13", "received": "3", "left": "3", "invoice": 1, "invoice__name": "SR-12349", "supplier": 1, "product": 1}""")
  196. self.assertEqual(self.c.put('{prefix}3/?format=json'.format(prefix=prefix), {"price_nopvn": "0.10656", "price": "0.13", "received": "3", "left": "2", "invoice": 1, "supplier": 1, "product": 1}).content, """{"id": 3, "price_nopvn": "0.10656", "price": "0.13", "received": "3", "left": "2", "invoice": 1, "invoice__name": "SR-12349", "supplier": 1, "product": 1}""")
  197. self.assertEqual(self.c.delete('{prefix}3/?format=json'.format(prefix=prefix)).status_code, 405)
  198. self.assertEqual(self.c.get('{prefix}?format=json'.format(prefix=prefix)).content, """[{"id": 3, "price_nopvn": "0.10656", "price": "0.13", "received": "3", "left": "2", "invoice": 1, "invoice__name": "SR-12349", "supplier": 1, "product": 1}, {"id": 1, "price_nopvn": "0.10656", "price": "0.13", "received": "5", "left": "5", "invoice": 1, "invoice__name": "SR-12349", "supplier": 1, "product": 1}]""")
  199.  
  200. #with foreign error keys
  201. self.assertContains(self.c.post('{prefix}?format=json'.format(prefix=prefix), {"price_nopvn": "0.10656", "price": "0.13", "received": "3", "invoice": 2, "supplier": 1, "product": 1}), """{"errors": {"invoice": ["Izv\u0113laties pareizu izv\u0113li. J\u016bsu izv\u0113lele neietilpst pieejamo sarakst\u0101."]}}""", status_code=400)
  202. self.assertContains(self.c.post('{prefix}?format=json'.format(prefix=prefix), {"price_nopvn": "0.10656", "price": "0.13", "received": "3", "invoice": 1, "supplier": 2, "product": 1}), """{"errors": {"supplier": ["Izv\u0113laties pareizu izv\u0113li. J\u016bsu izv\u0113lele neietilpst pieejamo sarakst\u0101."]}}""", status_code=400)
  203. self.assertContains(self.c.post('{prefix}?format=json'.format(prefix=prefix), {"price_nopvn": "0.10656", "price": "0.13", "received": "3", "invoice": 1, "supplier": 1, "product": 2}), """{"errors": {"product": ["Izv\u0113laties pareizu izv\u0113li. J\u016bsu izv\u0113lele neietilpst pieejamo sarakst\u0101."]}}""", status_code=400)
  204. self.assertContains(self.c.post('{prefix}?format=json'.format(prefix=prefix), {"price_nopvn": "0.10656", "price": "0.13", "received": "3", "invoice": 2, "supplier": 2, "product": 2}), """{"errors": {"invoice": ["Izv\u0113laties pareizu izv\u0113li. J\u016bsu izv\u0113lele neietilpst pieejamo sarakst\u0101."], "supplier": ["Izv\u0113laties pareizu izv\u0113li. J\u016bsu izv\u0113lele neietilpst pieejamo sarakst\u0101."], "product": ["Izv\u0113laties pareizu izv\u0113li. J\u016bsu izv\u0113lele neietilpst pieejamo sarakst\u0101."]}}""", status_code=400)
Add Comment
Please, Sign In to add comment