package service import ( "context" "testing" "time" smokemodel "wx_service/internal/smoke/model" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" ) func setupSmokeLogServiceTestDB(t *testing.T) *gorm.DB { t.Helper() db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{ Logger: logger.Default.LogMode(logger.Silent), }) if err != nil { t.Fatalf("open sqlite: %v", err) } if err := db.Exec(` CREATE TABLE fa_smoke_log ( id INTEGER PRIMARY KEY AUTOINCREMENT, uid INTEGER NOT NULL, smoke_time DATE NULL, smoke_at DATETIME NULL, remark TEXT, createtime INTEGER, updatetime INTEGER, deletetime INTEGER, level INTEGER DEFAULT 1, num INTEGER DEFAULT 1 )`).Error; err != nil { t.Fatalf("create fa_smoke_log: %v", err) } return db } func TestSmokeLogServiceCreateKeepsZeroForResisted(t *testing.T) { t.Parallel() db := setupSmokeLogServiceTestDB(t) svc := NewSmokeLogService(db) smokeAt := time.Date(2026, 3, 4, 0, 59, 0, 0, time.Local) _, err := svc.Create(context.Background(), 1001, CreateSmokeLogRequest{ SmokeAt: &smokeAt, Remark: "resist", Level: 0, Num: 0, }) if err != nil { t.Fatalf("create resisted log: %v", err) } var got smokemodel.SmokeLog if err := db.Where("uid = ?", 1001).Order("id DESC").First(&got).Error; err != nil { t.Fatalf("load created record: %v", err) } if got.Level != 0 || got.Num != 0 { t.Fatalf("created resisted log level/num=(%d,%d), want=(0,0)", got.Level, got.Num) } }