feat(trading): support multi-item purchase intents
This commit is contained in:
@@ -134,6 +134,54 @@ async def test_match_ignores_query_string_difference():
|
||||
assert result.verdict == verify.VerifyVerdict.ALREADY_ORDERED
|
||||
|
||||
|
||||
async def test_multiple_item_intent_requires_all_items_in_same_order():
|
||||
gateway = FakeGateway()
|
||||
site = FakeSite(
|
||||
window=OrderListWindow(
|
||||
entries=[
|
||||
OrderListEntry(
|
||||
order_number="o1",
|
||||
order_date="2026-08-10T00:00:00Z",
|
||||
items=[
|
||||
OrderListItem(item_url="https://item.rakuten.co.jp/shop/x/"),
|
||||
OrderListItem(item_url="https://item.rakuten.co.jp/shop/y/"),
|
||||
],
|
||||
)
|
||||
],
|
||||
window_fully_covered=True,
|
||||
)
|
||||
)
|
||||
task = _make_task()
|
||||
task.intent = {
|
||||
"items": [
|
||||
{"item_url": "https://item.rakuten.co.jp/shop/x/"},
|
||||
{"item_url": "https://item.rakuten.co.jp/shop/y/"},
|
||||
]
|
||||
}
|
||||
result = await verify.verify_on_site(task, gateway=gateway, site=site)
|
||||
assert result.verdict == verify.VerifyVerdict.ALREADY_ORDERED
|
||||
assert result.site_order_id == "o1"
|
||||
|
||||
|
||||
async def test_multiple_item_intent_partial_order_match_is_not_ordered():
|
||||
gateway = FakeGateway()
|
||||
site = FakeSite(
|
||||
window=OrderListWindow(
|
||||
entries=[_entry("o1", "https://item.rakuten.co.jp/shop/x/")],
|
||||
window_fully_covered=True,
|
||||
)
|
||||
)
|
||||
task = _make_task()
|
||||
task.intent = {
|
||||
"items": [
|
||||
{"item_url": "https://item.rakuten.co.jp/shop/x/"},
|
||||
{"item_url": "https://item.rakuten.co.jp/shop/y/"},
|
||||
]
|
||||
}
|
||||
result = await verify.verify_on_site(task, gateway=gateway, site=site)
|
||||
assert result.verdict == verify.VerifyVerdict.NOT_ORDERED
|
||||
|
||||
|
||||
# ---- 命中 0 笔且窗口确认覆盖完:未下单 ----
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user