diff --git a/internal/service/package/service_test.go b/internal/service/package/service_test.go index 523f63e..4a80071 100644 --- a/internal/service/package/service_test.go +++ b/internal/service/package/service_test.go @@ -288,6 +288,90 @@ func TestPackageService_Get(t *testing.T) { }) } +func TestPackageService_Update(t *testing.T) { + tx := testutils.NewTestTransaction(t) + packageStore := postgres.NewPackageStore(tx) + packageSeriesStore := postgres.NewPackageSeriesStore(tx) + svc := New(packageStore, packageSeriesStore) + + ctx := middleware.SetUserContext(context.Background(), &middleware.UserContextInfo{ + UserID: 1, + UserType: constants.UserTypePlatform, + }) + + req := &dto.CreatePackageRequest{ + PackageCode: generateUniquePackageCode("PKG_UPDATE"), + PackageName: "更新测试套餐", + PackageType: "formal", + DurationMonths: 1, + Price: 9900, + } + created, err := svc.Create(ctx, req) + require.NoError(t, err) + + t.Run("更新成功", func(t *testing.T) { + newName := "更新后的套餐名称" + newPrice := int64(19900) + updateReq := &dto.UpdatePackageRequest{ + PackageName: &newName, + Price: &newPrice, + } + + resp, err := svc.Update(ctx, created.ID, updateReq) + require.NoError(t, err) + assert.Equal(t, newName, resp.PackageName) + assert.Equal(t, newPrice, resp.Price) + }) + + t.Run("更新不存在的套餐", func(t *testing.T) { + newName := "test" + updateReq := &dto.UpdatePackageRequest{ + PackageName: &newName, + } + + _, err := svc.Update(ctx, 99999, updateReq) + require.Error(t, err) + appErr, ok := err.(*errors.AppError) + require.True(t, ok) + assert.Equal(t, errors.CodeNotFound, appErr.Code) + }) +} + +func TestPackageService_Delete(t *testing.T) { + tx := testutils.NewTestTransaction(t) + packageStore := postgres.NewPackageStore(tx) + packageSeriesStore := postgres.NewPackageSeriesStore(tx) + svc := New(packageStore, packageSeriesStore) + + ctx := middleware.SetUserContext(context.Background(), &middleware.UserContextInfo{ + UserID: 1, + UserType: constants.UserTypePlatform, + }) + + req := &dto.CreatePackageRequest{ + PackageCode: generateUniquePackageCode("PKG_DELETE"), + PackageName: "删除测试套餐", + PackageType: "formal", + DurationMonths: 1, + Price: 9900, + } + created, err := svc.Create(ctx, req) + require.NoError(t, err) + + t.Run("删除成功", func(t *testing.T) { + err := svc.Delete(ctx, created.ID) + require.NoError(t, err) + + _, err = svc.Get(ctx, created.ID) + require.Error(t, err) + }) + + t.Run("删除不存在的套餐", func(t *testing.T) { + err := svc.Delete(ctx, 99999) + require.Error(t, err) + }) +} + func TestPackageService_List(t *testing.T) { tx := testutils.NewTestTransaction(t) packageStore := postgres.NewPackageStore(tx)