/tests/integration/test_search.py

https://github.com/fetchfans/braintree_python · Python · 370 lines · 303 code · 67 blank · 0 comment · 0 complexity · e26b457b784974c6d1b9487a4c26d1b7 MD5 · raw file

  1. from tests.test_helper import *
  2. class TestSearch(unittest.TestCase):
  3. def test_text_node_is(self):
  4. credit_card = Customer.create({
  5. "credit_card": {
  6. "number": "4111111111111111",
  7. "expiration_date": "05/2010",
  8. }
  9. }).customer.credit_cards[0]
  10. trial_subscription = Subscription.create({
  11. "payment_method_token": credit_card.token,
  12. "plan_id": TestHelper.trial_plan["id"]
  13. }).subscription
  14. trialless_subscription = Subscription.create({
  15. "payment_method_token": credit_card.token,
  16. "plan_id": TestHelper.trialless_plan["id"]
  17. }).subscription
  18. collection = Subscription.search([
  19. SubscriptionSearch.plan_id == "integration_trial_plan"
  20. ])
  21. self.assertTrue(TestHelper.includes(collection, trial_subscription))
  22. self.assertFalse(TestHelper.includes(collection, trialless_subscription))
  23. def test_text_node_is_not(self):
  24. credit_card = Customer.create({
  25. "credit_card": {
  26. "number": "4111111111111111",
  27. "expiration_date": "05/2010",
  28. }
  29. }).customer.credit_cards[0]
  30. trial_subscription = Subscription.create({
  31. "payment_method_token": credit_card.token,
  32. "plan_id": TestHelper.trial_plan["id"]
  33. }).subscription
  34. trialless_subscription = Subscription.create({
  35. "payment_method_token": credit_card.token,
  36. "plan_id": TestHelper.trialless_plan["id"]
  37. }).subscription
  38. collection = Subscription.search([
  39. SubscriptionSearch.plan_id != "integration_trialless_plan"
  40. ])
  41. self.assertTrue(TestHelper.includes(collection, trial_subscription))
  42. self.assertFalse(TestHelper.includes(collection, trialless_subscription))
  43. def test_text_node_starts_with(self):
  44. credit_card = Customer.create({
  45. "credit_card": {
  46. "number": "4111111111111111",
  47. "expiration_date": "05/2010",
  48. }
  49. }).customer.credit_cards[0]
  50. trial_subscription = Subscription.create({
  51. "payment_method_token": credit_card.token,
  52. "plan_id": TestHelper.trial_plan["id"]
  53. }).subscription
  54. trialless_subscription = Subscription.create({
  55. "payment_method_token": credit_card.token,
  56. "plan_id": TestHelper.trialless_plan["id"]
  57. }).subscription
  58. collection = Subscription.search([
  59. SubscriptionSearch.plan_id.starts_with("integration_trial_p")
  60. ])
  61. self.assertTrue(TestHelper.includes(collection, trial_subscription))
  62. self.assertFalse(TestHelper.includes(collection, trialless_subscription))
  63. def test_text_node_ends_with(self):
  64. credit_card = Customer.create({
  65. "credit_card": {
  66. "number": "4111111111111111",
  67. "expiration_date": "05/2010",
  68. }
  69. }).customer.credit_cards[0]
  70. trial_subscription = Subscription.create({
  71. "payment_method_token": credit_card.token,
  72. "plan_id": TestHelper.trial_plan["id"]
  73. }).subscription
  74. trialless_subscription = Subscription.create({
  75. "payment_method_token": credit_card.token,
  76. "plan_id": TestHelper.trialless_plan["id"]
  77. }).subscription
  78. collection = Subscription.search([
  79. SubscriptionSearch.plan_id.ends_with("trial_plan")
  80. ])
  81. self.assertTrue(TestHelper.includes(collection, trial_subscription))
  82. self.assertFalse(TestHelper.includes(collection, trialless_subscription))
  83. def test_text_node_contains(self):
  84. credit_card = Customer.create({
  85. "credit_card": {
  86. "number": "4111111111111111",
  87. "expiration_date": "05/2010",
  88. }
  89. }).customer.credit_cards[0]
  90. trial_subscription = Subscription.create({
  91. "payment_method_token": credit_card.token,
  92. "plan_id": TestHelper.trial_plan["id"]
  93. }).subscription
  94. trialless_subscription = Subscription.create({
  95. "payment_method_token": credit_card.token,
  96. "plan_id": TestHelper.trialless_plan["id"]
  97. }).subscription
  98. collection = Subscription.search([
  99. SubscriptionSearch.plan_id.contains("rial_pl")
  100. ])
  101. self.assertTrue(TestHelper.includes(collection, trial_subscription))
  102. self.assertFalse(TestHelper.includes(collection, trialless_subscription))
  103. def test_multiple_value_node_in_list(self):
  104. credit_card = Customer.create({
  105. "credit_card": {
  106. "number": "4111111111111111",
  107. "expiration_date": "05/2010",
  108. }
  109. }).customer.credit_cards[0]
  110. active_subscription = Subscription.create({
  111. "payment_method_token": credit_card.token,
  112. "plan_id": TestHelper.trialless_plan["id"]
  113. }).subscription
  114. canceled_subscription = Subscription.create({
  115. "payment_method_token": credit_card.token,
  116. "plan_id": TestHelper.trialless_plan["id"]
  117. }).subscription
  118. Subscription.cancel(canceled_subscription.id)
  119. collection = Subscription.search([
  120. SubscriptionSearch.status.in_list([Subscription.Status.Active, Subscription.Status.Canceled])
  121. ])
  122. self.assertTrue(TestHelper.includes(collection, active_subscription))
  123. self.assertTrue(TestHelper.includes(collection, canceled_subscription))
  124. def test_multiple_value_node_in_list_as_arg_list(self):
  125. credit_card = Customer.create({
  126. "credit_card": {
  127. "number": "4111111111111111",
  128. "expiration_date": "05/2010",
  129. }
  130. }).customer.credit_cards[0]
  131. active_subscription = Subscription.create({
  132. "payment_method_token": credit_card.token,
  133. "plan_id": TestHelper.trialless_plan["id"]
  134. }).subscription
  135. canceled_subscription = Subscription.create({
  136. "payment_method_token": credit_card.token,
  137. "plan_id": TestHelper.trialless_plan["id"]
  138. }).subscription
  139. Subscription.cancel(canceled_subscription.id)
  140. collection = Subscription.search([
  141. SubscriptionSearch.status.in_list(Subscription.Status.Active, Subscription.Status.Canceled)
  142. ])
  143. self.assertTrue(TestHelper.includes(collection, active_subscription))
  144. self.assertTrue(TestHelper.includes(collection, canceled_subscription))
  145. def test_multiple_value_node_is(self):
  146. credit_card = Customer.create({
  147. "credit_card": {
  148. "number": "4111111111111111",
  149. "expiration_date": "05/2010",
  150. }
  151. }).customer.credit_cards[0]
  152. active_subscription = Subscription.create({
  153. "payment_method_token": credit_card.token,
  154. "plan_id": TestHelper.trialless_plan["id"]
  155. }).subscription
  156. canceled_subscription = Subscription.create({
  157. "payment_method_token": credit_card.token,
  158. "plan_id": TestHelper.trialless_plan["id"]
  159. }).subscription
  160. Subscription.cancel(canceled_subscription.id)
  161. collection = Subscription.search([
  162. SubscriptionSearch.status == Subscription.Status.Active
  163. ])
  164. self.assertTrue(TestHelper.includes(collection, active_subscription))
  165. self.assertFalse(TestHelper.includes(collection, canceled_subscription))
  166. def test_range_node_min(self):
  167. name = "Henrietta Livingston%s" % randint(1,100000)
  168. t_1500 = Transaction.sale({
  169. "amount": "1500.00",
  170. "credit_card": {
  171. "number": "4111111111111111",
  172. "expiration_date": "05/2012",
  173. "cardholder_name": name
  174. }
  175. }).transaction
  176. t_1800 = Transaction.sale({
  177. "amount": "1800.00",
  178. "credit_card": {
  179. "number": "4111111111111111",
  180. "expiration_date": "05/2012",
  181. "cardholder_name": name
  182. }
  183. }).transaction
  184. collection = Transaction.search([
  185. TransactionSearch.credit_card_cardholder_name == name,
  186. TransactionSearch.amount >= "1700"
  187. ])
  188. self.assertEquals(1, collection.maximum_size)
  189. self.assertEquals(t_1800.id, collection.first.id)
  190. collection = Transaction.search([
  191. TransactionSearch.credit_card_cardholder_name == name,
  192. TransactionSearch.amount.greater_than_or_equal_to("1700")
  193. ])
  194. self.assertEquals(1, collection.maximum_size)
  195. self.assertEquals(t_1800.id, collection.first.id)
  196. def test_range_node_max(self):
  197. name = "Henrietta Livingston%s" % randint(1,100000)
  198. t_1500 = Transaction.sale({
  199. "amount": "1500.00",
  200. "credit_card": {
  201. "number": "4111111111111111",
  202. "expiration_date": "05/2012",
  203. "cardholder_name": name
  204. }
  205. }).transaction
  206. t_1800 = Transaction.sale({
  207. "amount": "1800.00",
  208. "credit_card": {
  209. "number": "4111111111111111",
  210. "expiration_date": "05/2012",
  211. "cardholder_name": name
  212. }
  213. }).transaction
  214. collection = Transaction.search([
  215. TransactionSearch.credit_card_cardholder_name == name,
  216. TransactionSearch.amount <= "1700"
  217. ])
  218. self.assertEquals(1, collection.maximum_size)
  219. self.assertEquals(t_1500.id, collection.first.id)
  220. collection = Transaction.search([
  221. TransactionSearch.credit_card_cardholder_name == name,
  222. TransactionSearch.amount.less_than_or_equal_to("1700")
  223. ])
  224. self.assertEquals(1, collection.maximum_size)
  225. self.assertEquals(t_1500.id, collection.first.id)
  226. def test_range_node_is(self):
  227. name = "Henrietta Livingston%s" % randint(1,100000)
  228. t_1500 = Transaction.sale({
  229. "amount": "1500.00",
  230. "credit_card": {
  231. "number": "4111111111111111",
  232. "expiration_date": "05/2012",
  233. "cardholder_name": name
  234. }
  235. }).transaction
  236. t_1800 = Transaction.sale({
  237. "amount": "1800.00",
  238. "credit_card": {
  239. "number": "4111111111111111",
  240. "expiration_date": "05/2012",
  241. "cardholder_name": name
  242. }
  243. }).transaction
  244. collection = Transaction.search([
  245. TransactionSearch.credit_card_cardholder_name == name,
  246. TransactionSearch.amount == "1800"
  247. ])
  248. self.assertEquals(1, collection.maximum_size)
  249. self.assertEquals(t_1800.id, collection.first.id)
  250. def test_range_node_between(self):
  251. name = "Henrietta Livingston%s" % randint(1,100000)
  252. t_1000 = Transaction.sale({
  253. "amount": TransactionAmounts.Authorize,
  254. "credit_card": {
  255. "number": "4111111111111111",
  256. "expiration_date": "05/2012",
  257. "cardholder_name": name
  258. }
  259. }).transaction
  260. t_1500 = Transaction.sale({
  261. "amount": "1500.00",
  262. "credit_card": {
  263. "number": "4111111111111111",
  264. "expiration_date": "05/2012",
  265. "cardholder_name": name
  266. }
  267. }).transaction
  268. t_1800 = Transaction.sale({
  269. "amount": "1800.00",
  270. "credit_card": {
  271. "number": "4111111111111111",
  272. "expiration_date": "05/2012",
  273. "cardholder_name": name
  274. }
  275. }).transaction
  276. collection = Transaction.search([
  277. TransactionSearch.credit_card_cardholder_name == name,
  278. TransactionSearch.amount.between("1100", "1600")
  279. ])
  280. self.assertEquals(1, collection.maximum_size)
  281. self.assertEquals(t_1500.id, collection.first.id)
  282. def test_search_on_multiple_values(self):
  283. credit_card = Customer.create({
  284. "credit_card": {
  285. "number": "4111111111111111",
  286. "expiration_date": "05/2010",
  287. }
  288. }).customer.credit_cards[0]
  289. active_subscription = Subscription.create({
  290. "payment_method_token": credit_card.token,
  291. "plan_id": TestHelper.trialless_plan["id"]
  292. }).subscription
  293. canceled_subscription = Subscription.create({
  294. "payment_method_token": credit_card.token,
  295. "plan_id": TestHelper.trialless_plan["id"]
  296. }).subscription
  297. Subscription.cancel(canceled_subscription.id)
  298. collection = Subscription.search([
  299. SubscriptionSearch.plan_id == "integration_trialless_plan",
  300. SubscriptionSearch.status.in_list([Subscription.Status.Active])
  301. ])
  302. self.assertTrue(TestHelper.includes(collection, active_subscription))
  303. self.assertFalse(TestHelper.includes(collection, canceled_subscription))