spark-server/internal/infrastructure/mysql/gorm_logger_test.go
zhr ae9a71034d feat: implement Spark IM V3 modular monolith
Add HTTP /v1 MVC, TCP send path, groups with server-side member-avatar collage, object-storage upload, and friends/favorites around the architecture-v3 layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 19:52:11 +08:00

61 lines
1.6 KiB
Go

package mysql
import (
"context"
"errors"
"testing"
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"go.uber.org/zap/zaptest/observer"
"gorm.io/gorm"
gormlogger "gorm.io/gorm/logger"
)
func TestGormLoggerTrace(t *testing.T) {
core, logs := observer.New(zapcore.DebugLevel)
z := zap.New(core)
gl := newGormLogger(z, time.Millisecond, gormlogger.Info)
gl.Trace(context.Background(), time.Now().Add(-10*time.Millisecond), func() (string, int64) {
return "SELECT 1", 1
}, nil)
if logs.FilterMessage("sql_slow").Len() != 1 {
t.Fatalf("want sql_slow, got %+v", logs.All())
}
gl.Trace(context.Background(), time.Now(), func() (string, int64) {
return "SELECT 2", 1
}, nil)
if logs.FilterMessage("sql").Len() < 1 {
t.Fatalf("want sql, got %+v", logs.All())
}
gl.Trace(context.Background(), time.Now(), func() (string, int64) {
return "SELECT 3", 0
}, errors.New("boom"))
if logs.FilterMessage("sql").FilterLevelExact(zapcore.ErrorLevel).Len() < 1 {
t.Fatalf("want sql error, got %+v", logs.All())
}
gl.Trace(context.Background(), time.Now(), func() (string, int64) {
return "SELECT 4", 0
}, gorm.ErrRecordNotFound)
}
func TestParseGormLevel(t *testing.T) {
if parseGormLevel("", "debug") != gormlogger.Info {
t.Fatal("debug follows zap")
}
if parseGormLevel("", "info") != gormlogger.Warn {
t.Fatal("info default warn")
}
if parseGormLevel("silent", "debug") != gormlogger.Silent {
t.Fatal("silent")
}
}
func TestOpenEmptyDSN(t *testing.T) {
db, err := Open(zap.NewNop(), &Options{})
if err != nil || db.Ready() {
t.Fatalf("empty dsn %v ready=%v", err, db.Ready())
}
}