Files
MeBox/internal/service/reader/audio_config_test.go
T
2026-10-01 21:57:25 +08:00

45 lines
1.3 KiB
Go

package reader
import (
"testing"
"github.com/truewhile/MeBox/internal/model"
)
// TestSaveAudioConfigPersistsCredits 听书跳过片头/片尾设置要落库,且只能改自己的书。
func TestSaveAudioConfigPersistsCredits(t *testing.T) {
svc, repos := newLoginTestService(t)
ctx := t.Context()
book := &model.ReaderBook{UserID: "u1", Name: "宠魅", Type: 1}
if err := repos.Reader.CreateBook(ctx, book); err != nil {
t.Fatal(err)
}
if err := svc.SaveAudioConfig(ctx, "u1", book.ID, 30, 15); err != nil {
t.Fatalf("保存听书设置失败: %v", err)
}
got, err := svc.GetBook(ctx, book.ID)
if err != nil {
t.Fatal(err)
}
if got.OpenCredits != 30 || got.CloseCredits != 15 {
t.Fatalf("片头/片尾 = %d/%d,期望 30/15", got.OpenCredits, got.CloseCredits)
}
// 0 是合法值(不跳过),必须能写回
if err := svc.SaveAudioConfig(ctx, "u1", book.ID, 0, 0); err != nil {
t.Fatalf("清零失败: %v", err)
}
if got, _ = svc.GetBook(ctx, book.ID); got.OpenCredits != 0 || got.CloseCredits != 0 {
t.Fatalf("清零后 = %d/%d,期望 0/0", got.OpenCredits, got.CloseCredits)
}
if err := svc.SaveAudioConfig(ctx, "u1", book.ID, -1, 0); err == nil {
t.Fatal("负数应被拒绝")
}
if err := svc.SaveAudioConfig(ctx, "other", book.ID, 10, 10); err == nil {
t.Fatal("他人书架应被拒绝")
}
}