test_tasks.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. from collections import namedtuple
  4. from apilib.monetary import RMB
  5. from apps.web.common.models import WithdrawRecord
  6. TEST_OPEN_ID = ''
  7. recharge_record = namedtuple('recharge_record', ['nickname', 'gateway', 'money'])
  8. def test_add():
  9. from taskmanager.tasks import add
  10. assert add(1, 2) == 3
  11. ##################
  12. ## To end users ##
  13. ##################
  14. def test_report_to_user_via_wechat():
  15. from taskmanager.tasks import report_to_user_via_wechat
  16. ################
  17. ## To dealers ##
  18. ################
  19. def test_report_to_dealer_via_wechat():
  20. from taskmanager.tasks import report_to_dealer_via_wechat
  21. def test_report_feedback_to_dealer_via_wechat():
  22. from taskmanager.tasks import report_feedback_to_dealer_via_wechat
  23. def test_report_daily_report_to_dealer_via_wechat():
  24. from taskmanager.tasks import report_daily_report_to_dealer_via_wechat
  25. def test_report_device_abnormally_offline_to_dealer_via_wechat():
  26. from taskmanager.tasks import report_device_abnormally_offline_to_dealer_via_wechat
  27. def test_send_SIM_expired_messages():
  28. from taskmanager.tasks import send_SIM_expired_messages
  29. ##################
  30. ### To managers ##
  31. ##################
  32. def test_weekly_notify_finance_manager():
  33. from taskmanager.tasks import weekly_notify_finance_manager
  34. def test_whale_withdraw_order_alert():
  35. from taskmanager.tasks import whale_withdraw_order_alert
  36. def test_withdraw_error_alert():
  37. from taskmanager.tasks import withdraw_error_alert
  38. def check_website_is_online():
  39. from taskmanager.tasks import check_website_is_online
  40. def test_generate_simCharge_excel_report():
  41. from taskmanager.tasks import generate_simCharge_excel_report
  42. def test_generate_dealerWithDraw_excel_report():
  43. from taskmanager.tasks import generate_dealerWithDraw_excel_report
  44. def test_generate_manager_map_options():
  45. from taskmanager.tasks import generate_manager_map_options
  46. def test_generate_biz_stats_for_manager():
  47. from taskmanager.tasks import generate_biz_stats_for_manager
  48. ######################
  49. ## system operation ##
  50. ######################
  51. def test_daily_check_auto_withdraw(mocker, dealer, income_type, source_key):
  52. from taskmanager.tasks import daily_check_auto_withdraw
  53. from django.conf import settings
  54. from apps.web.core.payment.wechat import WechatPaymentGateway
  55. settings.SUPPORT_DEALER_AUTO_WITHDRAW = True
  56. from testcase.unit.responses import WITHDRAW_SUCCEEDED
  57. mocker.patch.object(WechatPaymentGateway, 'withdraw_via_changes', return_value=WITHDRAW_SUCCEEDED)
  58. dealer.autoWithdrawAllowable = True
  59. dealer.set_balance(income_type, source_key, RMB(100))
  60. dealer.save()
  61. daily_check_auto_withdraw()
  62. assert dealer.reload().sub_balance(income_type = income_type, source_key = source_key) == RMB(0)
  63. def test_remove_serviceProgress_periodically():
  64. from taskmanager.tasks import remove_serviceProgress_periodically
  65. def test_check_wechat_withdraw_via_bank(mocker):
  66. import xmltodict
  67. from taskmanager.tasks import check_withdraw_via_bank
  68. from apps.web.core.payment.wechat import WechatPaymentGateway
  69. success_response = xmltodict.parse("""<xml>
  70. <return_code><![CDATA[SUCCESS]]></return_code>
  71. <return_msg><![CDATA[ok]]></return_msg>
  72. <result_code><![CDATA[SUCCESS]]></result_code>
  73. <err_code><![CDATA[SUCCESS]]></err_code>
  74. <err_code_des><![CDATA[ok]]></err_code_des>
  75. <mch_id><![CDATA[2302758702]]></mch_id>
  76. <partner_trade_no><![CDATA[1212121221278]]></partner_trade_no>
  77. <payment_no><![CDATA[10000600500852017030900000020006012]]></payment_no>
  78. <bank_no_md5><![CDATA[2260AB5EF3D290E28EFD3F74FF7A29A0]]></bank_no_md5>
  79. <true_name_md5><![CDATA[7F25B325D37790764ABA55DAD8D09B76]]></true_name_md5>
  80. <amount>500</amount>
  81. <status><![CDATA[处理中]]></status>
  82. <cmms_amt>0</cmms_amt>
  83. <create_time><![CDATA[2017-03-09 15:04:04]]></create_time>
  84. <reason><![CDATA[]]></reason>
  85. </xml>""")['xml']
  86. fail_resposne_ORDERNOTEXIST = xmltodict.parse("""<xml>
  87. <return_code><![CDATA[SUCCESS]]></return_code>
  88. <return_msg><![CDATA[订单不存在,请核实后再查]]></return_msg>
  89. <result_code><![CDATA[FAIL]]></result_code>
  90. <err_code><![CDATA[ORDERNOTEXIST]]></err_code>
  91. <err_code_des><![CDATA[订单不存在,请核实后再查]]></err_code_des>
  92. </xml>""")['xml']
  93. fail_response_FAIL = {
  94. u'amount': u'39164',
  95. u'bank_no_md5': u'0A31660F888670C19FBA203F0C982311',
  96. u'cmms_amt': u'100',
  97. u'create_time': u'2019-04-15 15:33:49',
  98. u'err_code': u'SUCCESS',
  99. u'err_code_des': u'\u67e5\u8be2\u6210\u529f',
  100. u'mch_id': u'1480791292',
  101. u'partner_trade_no': u'TX20190415153349430564wXNtu6qKld',
  102. u'pay_succ_time': u'2019-04-16 02:10:06',
  103. u'payment_no': u'10000287536082019041500000111424399',
  104. u'reason': None,
  105. u'result_code': u'SUCCESS',
  106. u'return_code': u'SUCCESS',
  107. u'return_msg': u'\u67e5\u8be2\u6210\u529f',
  108. u'status': u'FAILED',
  109. u'true_name_md5': u'260C6052708B32F64521D2D0FD280D8E'
  110. }
  111. def test_success():
  112. mocker.patch.object(WechatPaymentGateway, 'get_transfer_result_via_bank', return_value=success_response)
  113. mocker.patch.object(WithdrawRecord, 'get_today_via_bank', )
  114. check_withdraw_via_bank()
  115. ## task system
  116. def test_send_topic_command():
  117. from taskmanager.tasks import send_topic_command