Files
server/tests/services/system_log_trace_test.go
T
2026-01-16 15:49:34 +08:00

66 lines
1.6 KiB
Go

package services
import (
"context"
"fmt"
"testing"
"time"
"github.com/goravel/framework/facades"
"github.com/stretchr/testify/assert"
"goravel/app/models"
"goravel/app/services"
"goravel/app/utils/traceid"
)
func TestSystemLogTraceIDPersistence(t *testing.T) {
t.Parallel()
uniqueTraceID := fmt.Sprintf("trace-%d", time.Now().UnixNano())
log := models.SystemLog{
Level: "info",
Module: "trace_test",
TraceID: uniqueTraceID,
Message: "trace id persistence test",
Context: `{"test":true}`,
}
err := facades.Orm().Query().Create(&log)
assert.NoError(t, err)
assert.NotZero(t, log.ID)
t.Cleanup(func() {
_, _ = facades.Orm().Query().Where("id", log.ID).Delete(&models.SystemLog{})
})
var stored models.SystemLog
err = facades.Orm().Query().Where("id", log.ID).First(&stored)
assert.NoError(t, err)
assert.Equal(t, uniqueTraceID, stored.TraceID)
var filtered models.SystemLog
err = facades.Orm().Query().Where("trace_id", uniqueTraceID).First(&filtered)
assert.NoError(t, err)
assert.Equal(t, log.ID, filtered.ID)
}
func TestSystemLogServiceRecord(t *testing.T) {
t.Parallel()
service := services.NewSystemLogService()
ctx, traceID := traceid.EnsureContext(context.Background())
err := service.Record(ctx, "error", "unit-test", "trace helper test", map[string]any{"ok": true})
assert.NoError(t, err)
var stored models.SystemLog
err = facades.Orm().Query().Where("trace_id", traceID).Order("id desc").First(&stored)
assert.NoError(t, err)
assert.Equal(t, "unit-test", stored.Module)
t.Cleanup(func() {
_, _ = facades.Orm().Query().Where("trace_id", traceID).Delete(&models.SystemLog{})
})
}