优化删除
This commit is contained in:
@@ -231,6 +231,80 @@ func TestUpdateQrCodeGroupNameAndRenameFlag(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteQrCodeAllowsIssuedQrCode(t *testing.T) {
|
||||
db := setupQrCodeTestDB(t)
|
||||
repo := NewRepository(db, nil)
|
||||
now := time.Date(2026, 6, 19, 17, 8, 0, 0, time.UTC)
|
||||
conversationID := uint64(1003)
|
||||
qrcode := model.ChatQrCode{
|
||||
ImageURL: "/api/files/object?key=qrcode/issued.png",
|
||||
Status: QrCodeStatusUsed,
|
||||
ConversationID: &conversationID,
|
||||
UsedAt: &now,
|
||||
CreatedBy: 1,
|
||||
}
|
||||
if err := db.Create(&qrcode).Error; err != nil {
|
||||
t.Fatalf("创建二维码失败: %v", err)
|
||||
}
|
||||
|
||||
if err := repo.DeleteQrCode(t.Context(), qrcode.ID); err != nil {
|
||||
t.Fatalf("删除已发放二维码失败: %v", err)
|
||||
}
|
||||
|
||||
var count int64
|
||||
if err := db.Model(&model.ChatQrCode{}).Where("id = ?", qrcode.ID).Count(&count).Error; err != nil {
|
||||
t.Fatalf("统计二维码失败: %v", err)
|
||||
}
|
||||
if count != 0 {
|
||||
t.Fatalf("二维码数量 = %d, want 0", count)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBatchDeleteQrCodes(t *testing.T) {
|
||||
db := setupQrCodeTestDB(t)
|
||||
repo := NewRepository(db, nil)
|
||||
now := time.Date(2026, 6, 19, 17, 8, 0, 0, time.UTC)
|
||||
conversationID := uint64(1004)
|
||||
qrcodes := []model.ChatQrCode{
|
||||
{
|
||||
ImageURL: "/api/files/object?key=qrcode/unused.png",
|
||||
Status: QrCodeStatusUnused,
|
||||
CreatedBy: 1,
|
||||
},
|
||||
{
|
||||
ImageURL: "/api/files/object?key=qrcode/used.png",
|
||||
Status: QrCodeStatusUsed,
|
||||
ConversationID: &conversationID,
|
||||
UsedAt: &now,
|
||||
CreatedBy: 1,
|
||||
},
|
||||
{
|
||||
ImageURL: "/api/files/object?key=qrcode/keep.png",
|
||||
Status: QrCodeStatusDisabled,
|
||||
CreatedBy: 1,
|
||||
},
|
||||
}
|
||||
if err := db.Create(&qrcodes).Error; err != nil {
|
||||
t.Fatalf("创建二维码失败: %v", err)
|
||||
}
|
||||
|
||||
deleted, err := repo.BatchDeleteQrCodes(t.Context(), []uint64{qrcodes[0].ID, qrcodes[1].ID})
|
||||
if err != nil {
|
||||
t.Fatalf("批量删除二维码失败: %v", err)
|
||||
}
|
||||
if deleted != 2 {
|
||||
t.Fatalf("删除数量 = %d, want 2", deleted)
|
||||
}
|
||||
|
||||
var remaining []model.ChatQrCode
|
||||
if err := db.Order("id ASC").Find(&remaining).Error; err != nil {
|
||||
t.Fatalf("查询剩余二维码失败: %v", err)
|
||||
}
|
||||
if len(remaining) != 1 || remaining[0].ID != qrcodes[2].ID {
|
||||
t.Fatalf("剩余二维码 = %+v, want id %d", remaining, qrcodes[2].ID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEnsureListingConversationCreatesQrCodeDeliveryTaskWhenStockEmpty(t *testing.T) {
|
||||
db := setupQrCodeTestDB(t)
|
||||
listing := model.RentalListing{
|
||||
|
||||
Reference in New Issue
Block a user