feat: 添加媒体资产测试,验证上传初始化时变体和来源ID的规则
This commit is contained in:
@@ -195,6 +195,54 @@ func (s *ContentTestSuite) Test_AttachAsset() {
|
||||
So(m.AssetID, ShouldEqual, asset.ID)
|
||||
So(m.Role, ShouldEqual, consts.ContentAssetRoleMain)
|
||||
})
|
||||
|
||||
Convey("preview role 只能绑定 preview variant,且必须有 source_asset_id", func() {
|
||||
previewAsset := &models.MediaAsset{
|
||||
TenantID: tenantID,
|
||||
UserID: userID,
|
||||
Type: consts.MediaAssetTypeVideo,
|
||||
Status: consts.MediaAssetStatusReady,
|
||||
Provider: "test",
|
||||
Bucket: "bucket",
|
||||
ObjectKey: "obj-preview",
|
||||
Meta: types.JSON([]byte("{}")),
|
||||
}
|
||||
So(previewAsset.Create(ctx), ShouldBeNil)
|
||||
|
||||
// 标记为 preview 产物,但不设置 source_asset_id,应被拒绝。
|
||||
_, err := s.DB.ExecContext(ctx, "UPDATE media_assets SET variant = 'preview', source_asset_id = NULL WHERE tenant_id = $1 AND id = $2", tenantID, previewAsset.ID)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
_, err = Content.AttachAsset(ctx, tenantID, userID, content.ID, previewAsset.ID, consts.ContentAssetRolePreview, 1, now)
|
||||
So(err, ShouldNotBeNil)
|
||||
var appErr *errorx.AppError
|
||||
So(errors.As(err, &appErr), ShouldBeTrue)
|
||||
So(appErr.Code, ShouldEqual, errorx.ErrPreconditionFailed.Code)
|
||||
})
|
||||
|
||||
Convey("main role 绑定 preview variant 应被拒绝", func() {
|
||||
previewAsset := &models.MediaAsset{
|
||||
TenantID: tenantID,
|
||||
UserID: userID,
|
||||
Type: consts.MediaAssetTypeVideo,
|
||||
Status: consts.MediaAssetStatusReady,
|
||||
Provider: "test",
|
||||
Bucket: "bucket",
|
||||
ObjectKey: "obj-preview2",
|
||||
Meta: types.JSON([]byte("{}")),
|
||||
}
|
||||
So(previewAsset.Create(ctx), ShouldBeNil)
|
||||
|
||||
// 将该资源标记为 preview 产物,并设置一个合法来源(指向已有 main 资源 asset)。
|
||||
_, err := s.DB.ExecContext(ctx, "UPDATE media_assets SET variant = 'preview', source_asset_id = $1 WHERE tenant_id = $2 AND id = $3", asset.ID, tenantID, previewAsset.ID)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
_, err = Content.AttachAsset(ctx, tenantID, userID, content.ID, previewAsset.ID, consts.ContentAssetRoleMain, 1, now)
|
||||
So(err, ShouldNotBeNil)
|
||||
var appErr *errorx.AppError
|
||||
So(errors.As(err, &appErr), ShouldBeTrue)
|
||||
So(appErr.Code, ShouldEqual, errorx.ErrPreconditionFailed.Code)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user