Files
tamabox/internal/db/censor_log_test.go
tamakyi e3e59e7c69 chore: baseline snapshot before moderation-strictness feature
Repo .git was damaged (refs/ missing, index truncated, object store near-empty).
Repaired via git init (rebuilt refs), stale index preserved as .git/index.corrupt-20260910.bak,
then full worktree committed as a rollback baseline.
2026-09-10 10:56:27 +08:00

86 lines
1.9 KiB
Go

// Copyright 2023 E99p1ant. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package db
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/require"
"gorm.io/gorm"
)
func TestCensorLogs(t *testing.T) {
t.Parallel()
db, cleanup := newTestDB(t)
ctx := context.Background()
censorLogsStore := NewCensorLogsStore(db)
for _, tc := range []struct {
name string
test func(t *testing.T, ctx context.Context, db *censorLogs)
}{
{"Create", testCensorLogsCreate},
{"GetByText", testCensorLogsGetByText},
} {
t.Run(tc.name, func(t *testing.T) {
t.Cleanup(func() {
if err := cleanup("censor_logs"); err != nil {
t.Fatal(err)
}
})
tc.test(t, ctx, censorLogsStore.(*censorLogs))
})
}
}
func testCensorLogsCreate(t *testing.T, ctx context.Context, db *censorLogs) {
err := db.Create(ctx, CreateCensorLogOptions{
SourceName: "aliyun",
Input: "hello world",
Pass: true,
RawResponse: []byte(`{}`),
})
require.Nil(t, err)
}
func testCensorLogsGetByText(t *testing.T, ctx context.Context, db *censorLogs) {
err := db.Create(ctx, CreateCensorLogOptions{
SourceName: "aliyun",
Input: "hello world",
Pass: true,
RawResponse: []byte(`{}`),
})
require.Nil(t, err)
t.Run("normal by cache", func(t *testing.T) {
got, err := db.GetByText(ctx, "aliyun", "hello world")
require.Nil(t, err)
got.CreatedAt = time.Time{}
got.UpdatedAt = time.Time{}
want := &CensorLog{
Model: gorm.Model{
ID: 1,
},
SourceName: "aliyun",
Input: "hello world",
InputHash: hashText("hello world"),
Pass: true,
RawResponse: []byte(`{}`),
}
require.Equal(t, want, got)
})
t.Run("no longer than", func(t *testing.T) {
_, err := db.GetByText(ctx, "aliyun", "hello world", time.Now())
require.Equal(t, ErrCensorLogsNotFound, err)
})
}