import pytest
|
|
|
|
from fe.access.buyer import Buyer
|
|
from fe.test.gen_book_data import GenBook
|
|
from fe.access.new_buyer import register_new_buyer
|
|
from fe.access.book import Book
|
|
import uuid
|
|
|
|
|
|
class TestPayment:
|
|
seller_id: str
|
|
store_id: str
|
|
buyer_id: str
|
|
password:str
|
|
buy_book_info_list: [Book]
|
|
total_price: int
|
|
order_id: str
|
|
buyer: Buyer
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def pre_run_initialization(self):
|
|
self.seller_id = "test_payment_seller_id_{}".format(str(uuid.uuid1()))
|
|
self.store_id = "test_payment_store_id_{}".format(str(uuid.uuid1()))
|
|
self.buyer_id = "test_payment_buyer_id_{}".format(str(uuid.uuid1()))
|
|
self.password = self.seller_id
|
|
gen_book = GenBook(self.seller_id, self.store_id)
|
|
ok, buy_book_id_list = gen_book.gen(non_exist_book_id=False, low_stock_level=False, max_book_count=5)
|
|
self.buy_book_info_list = gen_book.buy_book_info_list
|
|
assert ok
|
|
b = register_new_buyer(self.buyer_id, self.password)
|
|
self.buyer = b
|
|
code, self.order_id = b.new_order(self.store_id, buy_book_id_list)
|
|
assert code == 200
|
|
self.total_price = 0
|
|
for item in self.buy_book_info_list:
|
|
book: Book = item[0]
|
|
num = item[1]
|
|
if book.price is None:
|
|
continue
|
|
else:
|
|
self.total_price = self.total_price + book.price * num
|
|
yield
|
|
|
|
def test_ok(self):
|
|
code = self.buyer.add_funds(self.total_price)
|
|
assert code == 200
|
|
code = self.buyer.payment(self.order_id)
|
|
assert code == 200
|
|
|
|
def test_authorization_error(self):
|
|
code = self.buyer.add_funds(self.total_price)
|
|
assert code == 200
|
|
self.buyer.password = self.buyer.password + "_x"
|
|
code = self.buyer.payment(self.order_id)
|
|
assert code != 200
|
|
|
|
def test_not_suff_funds(self):
|
|
code = self.buyer.add_funds(self.total_price - 1)
|
|
assert code == 200
|
|
code = self.buyer.payment(self.order_id)
|
|
assert code != 200
|
|
|
|
def test_repeat_pay(self):
|
|
code = self.buyer.add_funds(self.total_price)
|
|
assert code == 200
|
|
code = self.buyer.payment(self.order_id)
|
|
assert code == 200
|
|
|
|
code = self.buyer.payment(self.order_id)
|
|
assert code != 200
|