update
This commit is contained in:
@ -14,9 +14,10 @@ import (
|
||||
// fakeGroupRepo 只实现分组相关的仓储方法,其余由嵌入的接口兜底(测试中不会调到未实现的方法)。
|
||||
type fakeGroupRepo struct {
|
||||
repository.ReviewRepository
|
||||
images []model.StreetSnapImage
|
||||
detail *model.StreetSnap
|
||||
attachFn func(snapID, mainID uint32, imgIDs []uint32) error
|
||||
images []model.StreetSnapImage
|
||||
detail *model.StreetSnap
|
||||
attachFn func(snapID, mainID uint32, imgIDs []uint32) error
|
||||
attachRunwayFn func(runwayID, mainID uint32, imgIDs []uint32) error
|
||||
}
|
||||
|
||||
func (f *fakeGroupRepo) StreetRecordDetail(_ context.Context, _ uint32) (*model.StreetSnap, error) {
|
||||
@ -41,6 +42,17 @@ func (f *fakeGroupRepo) DetachStreetSnapImage(_ context.Context, _ uint32, _ uin
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *fakeGroupRepo) AttachRunwayImages(_ context.Context, runwayID, mainID uint32, imgIDs []uint32) error {
|
||||
if f.attachRunwayFn != nil {
|
||||
return f.attachRunwayFn(runwayID, mainID, imgIDs)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *fakeGroupRepo) DetachRunwayImage(_ context.Context, _ uint32, _ uint32) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var _ repository.ReviewRepository = (*fakeGroupRepo)(nil)
|
||||
|
||||
func newGroupService(f *fakeGroupRepo) ReviewService {
|
||||
@ -102,12 +114,32 @@ func TestStreetGroupAttachDelegates(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestStreetGroupNonStreetRejected 走秀模块不允许主副图分组操作。
|
||||
// TestStreetGroupNonStreetRejected 既非 street 也非 runway 的实体类型不允许主副图分组操作。
|
||||
func TestStreetGroupNonStreetRejected(t *testing.T) {
|
||||
repo := &fakeGroupRepo{}
|
||||
svc := newGroupService(repo)
|
||||
if err := svc.AttachImages(context.Background(), dto.IngestKindRunway, 7, 1, []uint32{2}); !errors.Is(err, ErrInvalidImageGroup) {
|
||||
t.Fatalf("走秀并入应返回 ErrInvalidImageGroup,实际 %v", err)
|
||||
if err := svc.AttachImages(context.Background(), "bogus", 7, 1, []uint32{2}); !errors.Is(err, ErrInvalidImageGroup) {
|
||||
t.Fatalf("未知实体并入应返回 ErrInvalidImageGroup,实际 %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// TestRunwayGroupAttachDelegates 走秀并入必须透传参数到 runway 仓储。
|
||||
func TestRunwayGroupAttachDelegates(t *testing.T) {
|
||||
var got struct {
|
||||
runwayID uint32
|
||||
mainID uint32
|
||||
imgIDs []uint32
|
||||
}
|
||||
repo := &fakeGroupRepo{attachRunwayFn: func(runwayID, mainID uint32, imgIDs []uint32) error {
|
||||
got.runwayID, got.mainID, got.imgIDs = runwayID, mainID, imgIDs
|
||||
return nil
|
||||
}}
|
||||
svc := newGroupService(repo)
|
||||
if err := svc.AttachImages(context.Background(), dto.IngestKindRunway, 9, 4, []uint32{5, 6}); err != nil {
|
||||
t.Fatalf("Runway AttachImages 失败: %v", err)
|
||||
}
|
||||
if got.runwayID != 9 || got.mainID != 4 || len(got.imgIDs) != 2 {
|
||||
t.Fatalf("参数透传错误: runwayID=%d mainID=%d imgIDs=%v", got.runwayID, got.mainID, got.imgIDs)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user