feat(weibo): 增加协作 CK 失效筛选与实时同步开关
This commit is contained in:
@@ -4,7 +4,9 @@ from __future__ import annotations
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from core.weibo import WeiboAuthError
|
||||
from web.backend.models import AuditLog, User, WeiboAccount, WeiboExternalOrderMetric
|
||||
from web.backend.routers import weibo_collab as weibo_collab_router
|
||||
from web.backend.schemas import WeiboCollabCkExportOut
|
||||
from web.backend.services import weibo_collab_service as collab
|
||||
|
||||
@@ -223,3 +225,67 @@ def test_export_cks_exposes_skipped_orders(db):
|
||||
assert dumped["exported"] == 1
|
||||
assert {item["id"] for item in dumped["skipped"]} == {unbound.id, 999999}
|
||||
assert any("还没关联微博账号" in item["reason"] for item in dumped["skipped"])
|
||||
|
||||
|
||||
def test_list_orders_filters_invalid_ck_and_summary_excludes_error(db):
|
||||
user = make_user(db)
|
||||
valid_account = make_account(db, uid="4014000101")
|
||||
invalid_account = make_account(db, uid="4014000102")
|
||||
error_account = make_account(db, uid="4014000103")
|
||||
invalid_account.ck_check_status = "invalid"
|
||||
error_account.ck_check_status = "error"
|
||||
db.commit()
|
||||
|
||||
for index, account in enumerate(
|
||||
(valid_account, invalid_account, error_account), start=1
|
||||
):
|
||||
collab.create_order(
|
||||
db,
|
||||
user,
|
||||
order_no=f"WB-CK-FILTER-{index}",
|
||||
account_id=account.id,
|
||||
goods_name="商品A",
|
||||
required_weidou=100,
|
||||
require_verified=False,
|
||||
)
|
||||
|
||||
invalid = collab.list_orders(
|
||||
db,
|
||||
page=1,
|
||||
page_size=20,
|
||||
ck_status="invalid",
|
||||
)
|
||||
|
||||
assert invalid["total"] == 1
|
||||
assert invalid["items"][0]["account_id"] == invalid_account.id
|
||||
assert collab.summary(db)["ck_invalid"] == 1
|
||||
|
||||
|
||||
def test_verify_batch_persists_ck_invalid_after_row_rollback(monkeypatch, db):
|
||||
user = make_user(db)
|
||||
account = make_account(db)
|
||||
order = collab.create_order(
|
||||
db,
|
||||
user,
|
||||
order_no="WB-CK-VERIFY-INVALID",
|
||||
account_id=account.id,
|
||||
goods_name="商品A",
|
||||
required_weidou=100,
|
||||
require_verified=False,
|
||||
)
|
||||
|
||||
def fail_refresh(*_args, **_kwargs):
|
||||
raise WeiboAuthError("CK 已过期")
|
||||
|
||||
monkeypatch.setattr(collab, "refresh_weibo_account", fail_refresh)
|
||||
|
||||
result = weibo_collab_router.verify_external_orders_batch(
|
||||
[order.id],
|
||||
db=db,
|
||||
current=user,
|
||||
)
|
||||
|
||||
assert result["success"] is False
|
||||
assert result["results"][0]["ck_status"] == "invalid"
|
||||
db.refresh(account)
|
||||
assert account.ck_check_status == "invalid"
|
||||
|
||||
Reference in New Issue
Block a user