You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.4 KiB

2 years ago
  1. import pytest
  2. from fe.access.buyer import Buyer
  3. from fe.test.gen_book_data import GenBook
  4. from fe.access.new_buyer import register_new_buyer
  5. from fe.access.book import Book
  6. import uuid
  7. class TestPayment:
  8. seller_id: str
  9. store_id: str
  10. buyer_id: str
  11. password:str
  12. buy_book_info_list: [Book]
  13. total_price: int
  14. order_id: str
  15. buyer: Buyer
  16. @pytest.fixture(autouse=True)
  17. def pre_run_initialization(self):
  18. self.seller_id = "test_payment_seller_id_{}".format(str(uuid.uuid1()))
  19. self.store_id = "test_payment_store_id_{}".format(str(uuid.uuid1()))
  20. self.buyer_id = "test_payment_buyer_id_{}".format(str(uuid.uuid1()))
  21. self.password = self.seller_id
  22. gen_book = GenBook(self.seller_id, self.store_id)
  23. ok, buy_book_id_list = gen_book.gen(non_exist_book_id=False, low_stock_level=False, max_book_count=5)
  24. self.buy_book_info_list = gen_book.buy_book_info_list
  25. assert ok
  26. b = register_new_buyer(self.buyer_id, self.password)
  27. self.buyer = b
  28. code, self.order_id = b.new_order(self.store_id, buy_book_id_list)
  29. assert code == 200
  30. self.total_price = 0
  31. for item in self.buy_book_info_list:
  32. book: Book = item[0]
  33. num = item[1]
  34. if book.price is None:
  35. continue
  36. else:
  37. self.total_price = self.total_price + book.price * num
  38. yield
  39. def test_ok(self):
  40. code = self.buyer.add_funds(self.total_price)
  41. assert code == 200
  42. code = self.buyer.payment(self.order_id)
  43. assert code == 200
  44. def test_authorization_error(self):
  45. code = self.buyer.add_funds(self.total_price)
  46. assert code == 200
  47. self.buyer.password = self.buyer.password + "_x"
  48. code = self.buyer.payment(self.order_id)
  49. assert code != 200
  50. def test_not_suff_funds(self):
  51. code = self.buyer.add_funds(self.total_price - 1)
  52. assert code == 200
  53. code = self.buyer.payment(self.order_id)
  54. assert code != 200
  55. def test_repeat_pay(self):
  56. code = self.buyer.add_funds(self.total_price)
  57. assert code == 200
  58. code = self.buyer.payment(self.order_id)
  59. assert code == 200
  60. code = self.buyer.payment(self.order_id)
  61. assert code != 200