perf: 减少采购重复前台查询 (#120)
This commit is contained in:
@@ -6,6 +6,7 @@ import unittest
|
||||
|
||||
from src.pdd_device_service import PddDeviceService
|
||||
from src.pdd_purchase_adapter import PddPurchaseError
|
||||
from src.performance_timing import TaskPerformanceTrace
|
||||
from src.pdd_u2_purchase_adapter import U2PddPurchaseAdapter
|
||||
from src.pdd_u2_purchase_adapter import U2PddLivePurchaseAdapter
|
||||
|
||||
@@ -251,6 +252,54 @@ class U2PddPurchaseAdapterTest(unittest.TestCase):
|
||||
self.assertEqual(device.editor_values, [])
|
||||
self.assertEqual(device.app_wait_calls, 0)
|
||||
|
||||
def test_reliable_pdd_tree_skips_repeated_app_current(self):
|
||||
device = FakeDevice()
|
||||
adapter = self._adapter(device, [])
|
||||
adapter.open_goods(GOODS_URL)
|
||||
calls_after_open = device.app_current_calls
|
||||
|
||||
state = adapter.read_state()
|
||||
|
||||
self.assertEqual(state.page_kind, "goods")
|
||||
self.assertEqual(device.app_current_calls, calls_after_open)
|
||||
adapter.close()
|
||||
|
||||
def test_ambiguous_tree_falls_back_to_app_current(self):
|
||||
device = FakeDevice()
|
||||
adapter = self._adapter(device, [])
|
||||
adapter.open_goods(GOODS_URL)
|
||||
calls_after_open = device.app_current_calls
|
||||
device.mode = "special"
|
||||
device.special_xml = (
|
||||
'<hierarchy><node package="com.xunmeng.pinduoduo" '
|
||||
'text="占位"/></hierarchy>'
|
||||
)
|
||||
|
||||
adapter.read_state()
|
||||
|
||||
self.assertEqual(device.app_current_calls, calls_after_open + 1)
|
||||
adapter.close()
|
||||
|
||||
def test_purchase_state_and_option_stages_are_recorded(self):
|
||||
device = FakeDevice()
|
||||
adapter = self._adapter(device, [])
|
||||
records = []
|
||||
trace = TaskPerformanceTrace(sink=records.append)
|
||||
trace.bind_task("PUR-PERFORMANCE")
|
||||
|
||||
with trace.activate():
|
||||
adapter.open_goods(GOODS_URL)
|
||||
adapter.read_state()
|
||||
adapter.select_options(
|
||||
{"color": "黑色", "size": "3XL【140-165斤】"}
|
||||
)
|
||||
|
||||
operations = [record["operation"] for record in records]
|
||||
self.assertIn("purchase_read_state", operations)
|
||||
self.assertIn("purchase_select_color", operations)
|
||||
self.assertIn("purchase_select_size", operations)
|
||||
adapter.close()
|
||||
|
||||
def test_same_quantity_does_not_focus_editor(self):
|
||||
device = FakeDevice()
|
||||
adapter = self._adapter(device, [])
|
||||
@@ -517,11 +566,13 @@ class U2PddPurchaseAdapterTest(unittest.TestCase):
|
||||
adapter.set_quantity(2)
|
||||
|
||||
state = adapter.read_state()
|
||||
calls_before_submit = device.app_current_calls
|
||||
adapter.submit_order_once()
|
||||
with self.assertRaises(PddPurchaseError) as raised:
|
||||
adapter.submit_order_once()
|
||||
|
||||
self.assertEqual(state.submit_candidate_count, 1)
|
||||
self.assertEqual(device.app_current_calls, calls_before_submit + 1)
|
||||
self.assertEqual(raised.exception.code, "PURCHASE_SUBMIT_ALREADY_ATTEMPTED")
|
||||
# 依次点击采购入口、数量加号和最终提交。
|
||||
self.assertEqual(len(device.clicks), 3)
|
||||
|
||||
Reference in New Issue
Block a user