feat: 接入商务用户资料和全局统计偏好
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user