fix(t243): allow deleting unreferenced procurement drafts

This commit is contained in:
QiuSW
2026-07-29 16:45:25 +08:00
parent 62eee74a70
commit 24eef29076
12 changed files with 504 additions and 102 deletions
@@ -1330,7 +1330,11 @@ func TestFreightDeleteRequiresConfirmationAndHandlesConflict(t *testing.T) {
)
if detail.Code != http.StatusOK ||
!strings.Contains(detail.Body.String(), "删除本地货运单") ||
!strings.Contains(detail.Body.String(), "data-freight-delete-dialog") {
!strings.Contains(detail.Body.String(), "data-freight-delete-dialog") ||
!strings.Contains(
detail.Body.String(),
"未绑定参考图的采购需求草稿",
) {
t.Fatalf("delete controls status/body = %d / %s", detail.Code, detail.Body)
}
cookie := csrfCookie(t, detail)
@@ -1374,7 +1378,7 @@ func TestFreightDeleteRequiresConfirmationAndHandlesConflict(t *testing.T) {
)
}
service.deleteErr = ErrFreightOrderInUse
service.deleteErr = ErrFreightOrderHasReference
request = httptest.NewRequest(
http.MethodPost,
"/freight/"+testTaskID+"/delete",
@@ -1386,10 +1390,32 @@ func TestFreightDeleteRequiresConfirmationAndHandlesConflict(t *testing.T) {
router.ServeHTTP(response, request)
if response.Code != http.StatusSeeOther ||
response.Header().Get("Location") !=
"/freight/"+testTaskID+"?notice=delete-conflict" ||
"/freight/"+testTaskID+"?notice=delete-reference-conflict" ||
len(logged) != 1 {
t.Fatalf(
"conflicting delete status/location/log = %d / %q / %#v",
"reference conflict status/location/log = %d / %q / %#v",
response.Code,
response.Header().Get("Location"),
logged,
)
}
service.deleteErr = ErrFreightOrderHasPurchaseTask
request = httptest.NewRequest(
http.MethodPost,
"/freight/"+testTaskID+"/delete",
strings.NewReader(values.Encode()),
)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
request.AddCookie(cookie)
response = httptest.NewRecorder()
router.ServeHTTP(response, request)
if response.Code != http.StatusSeeOther ||
response.Header().Get("Location") !=
"/freight/"+testTaskID+"?notice=delete-task-conflict" ||
len(logged) != 1 {
t.Fatalf(
"task conflict status/location/log = %d / %q / %#v",
response.Code,
response.Header().Get("Location"),
logged,