Files
kra-new/internal/service/business/preference_test.go
T

43 lines
1.1 KiB
Go

package business
import (
"context"
"kra/internal/biz/business"
"kra/internal/service/dto"
"testing"
)
type preferenceFake struct {
calls int
value business.UserPreference
}
func (f *preferenceFake) Current(context.Context) (*business.UserPreference, error) {
return &f.value, nil
}
func (f *preferenceFake) UpdateCurrent(_ context.Context, p business.UserPreference) error {
f.calls++
f.value = p
return nil
}
func TestPreferenceRequiresBothFieldsButAcceptsFalse(t *testing.T) {
f := &preferenceFake{}
s := &UserPreferenceService{uc: f}
off := false
for _, req := range []*dto.UserPreferenceRequest{nil, {}, {IncludeSubPromote: &off}, {IDCardDedup: &off}} {
if err := s.UpdateCurrent(context.Background(), req); err != business.ErrPreferenceRequired {
t.Fatalf("缺字段应被拒绝: %v", err)
}
}
if f.calls != 0 {
t.Fatal("校验失败后不应调用用例")
}
if err := s.UpdateCurrent(context.Background(), &dto.UserPreferenceRequest{IncludeSubPromote: &off, IDCardDedup: &off}); err != nil {
t.Fatal(err)
}
if f.calls != 1 || f.value.IncludeSubPromote || f.value.IDCardDedup {
t.Fatalf("false 值未完整传递: %+v", f)
}
}