51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package service
|
|
|
|
import (
|
|
"database/sql"
|
|
"errors"
|
|
"testing"
|
|
|
|
"cmautobuy/admin/repository"
|
|
_ "modernc.org/sqlite"
|
|
)
|
|
|
|
func TestDeleteInnerCodes_去重后物理删除(t *testing.T) {
|
|
db, err := sql.Open("sqlite", "file:service_inner_code_delete?mode=memory&cache=shared")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
if _, err := db.Exec(`CREATE TABLE syb_inner_code_records (
|
|
id INTEGER PRIMARY KEY,status TEXT NOT NULL,deleted_at TEXT
|
|
); INSERT INTO syb_inner_code_records(id,status) VALUES(1,'pending'),(2,'queued')`); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
count, err := DeleteInnerCodes(db, []int64{1, 1, 2, 0, -1})
|
|
if err != nil || count != 2 {
|
|
t.Fatalf("count=%d err=%v", count, err)
|
|
}
|
|
var remaining int
|
|
if err := db.QueryRow(`SELECT COUNT(*) FROM syb_inner_code_records`).Scan(&remaining); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if remaining != 0 {
|
|
t.Fatalf("物理删除后仍剩余 %d 条记录", remaining)
|
|
}
|
|
}
|
|
|
|
func TestDeleteInnerCodes_回写中错误原样返回(t *testing.T) {
|
|
db, err := sql.Open("sqlite", "file:service_inner_code_delete_applying?mode=memory&cache=shared")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
if _, err := db.Exec(`CREATE TABLE syb_inner_code_records (
|
|
id INTEGER PRIMARY KEY,status TEXT NOT NULL,deleted_at TEXT
|
|
); INSERT INTO syb_inner_code_records(id,status) VALUES(1,'applying')`); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := DeleteInnerCodes(db, []int64{1}); !errors.Is(err, repository.ErrInnerCodeDeleteApplying) {
|
|
t.Fatalf("期望正在回写错误,实际 %v", err)
|
|
}
|
|
}
|