merge: P8 订阅/recurring + 拒付 chargeback 并入(订阅生命周期/续费/取消/past_due/chargeback/事件集收口)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013nMthbVEmQquxBRKb9Fj8u # Conflicts: # internal/model/testdb.go # internal/provider/provider.go # internal/router/router.go # internal/store/order_query_test.go # main.go
This commit is contained in:
@@ -232,3 +232,25 @@ func TestListAttemptsByChannelSince(t *testing.T) {
|
||||
t.Fatalf("只应含近期 crypto, got %+v", got)
|
||||
}
|
||||
}
|
||||
|
||||
// TestMarkDisputed 覆盖 P8 Task6 打标:条件 UPDATE 只在 disputed=false 时翻转,重投同一
|
||||
// dispute(第二次调用)幂等 no-op(rows_affected=0,不报错)。
|
||||
func TestMarkDisputed(t *testing.T) {
|
||||
s := store.NewOrderStore(model.OpenTestDB(t))
|
||||
seedOrder(t, s, "PAY-Q3")
|
||||
|
||||
flipped, err := s.MarkDisputed("PAY-Q3")
|
||||
if err != nil || !flipped {
|
||||
t.Fatalf("first MarkDisputed: flipped=%v err=%v", flipped, err)
|
||||
}
|
||||
o, err := s.GetOrder("PAY-Q3")
|
||||
if err != nil || !o.Disputed {
|
||||
t.Fatalf("order after MarkDisputed = %+v, %v", o, err)
|
||||
}
|
||||
|
||||
// 重投同一 dispute → 幂等 no-op,不报错。
|
||||
again, err := s.MarkDisputed("PAY-Q3")
|
||||
if err != nil || again {
|
||||
t.Fatalf("dup MarkDisputed: again=%v err=%v", again, err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user