productDetailLogic_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package product
  2. import (
  3. "context"
  4. "errors"
  5. "testing"
  6. "time"
  7. productModel "perms-system-server/internal/model/product"
  8. "perms-system-server/internal/response"
  9. "perms-system-server/internal/svc"
  10. "perms-system-server/internal/testutil"
  11. "perms-system-server/internal/types"
  12. "github.com/stretchr/testify/assert"
  13. "github.com/stretchr/testify/require"
  14. )
  15. // TC-0058: 正常查询
  16. func TestProductDetail_Success(t *testing.T) {
  17. ctx := context.Background()
  18. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  19. conn := testutil.GetTestSqlConn()
  20. code := testutil.UniqueId()
  21. now := time.Now().Unix()
  22. result, err := svcCtx.SysProductModel.Insert(ctx, &productModel.SysProduct{
  23. Code: code,
  24. Name: "详情测试产品",
  25. AppKey: "dk_" + code,
  26. AppSecret: "ds_" + code,
  27. Remark: "详情备注",
  28. Status: 1,
  29. CreateTime: now,
  30. UpdateTime: now,
  31. })
  32. require.NoError(t, err)
  33. id, _ := result.LastInsertId()
  34. t.Cleanup(func() {
  35. testutil.CleanTable(ctx, conn, "`sys_product`", id)
  36. })
  37. logic := NewProductDetailLogic(ctx, svcCtx)
  38. item, err := logic.ProductDetail(&types.ProductDetailReq{Id: id})
  39. require.NoError(t, err)
  40. require.NotNil(t, item)
  41. assert.Equal(t, id, item.Id)
  42. assert.Equal(t, code, item.Code)
  43. assert.Equal(t, "详情测试产品", item.Name)
  44. assert.Equal(t, "dk_"+code, item.AppKey)
  45. assert.Equal(t, "详情备注", item.Remark)
  46. assert.Equal(t, int64(1), item.Status)
  47. assert.Equal(t, now, item.CreateTime)
  48. }
  49. // TC-0059: 不存在
  50. func TestProductDetail_NotFound(t *testing.T) {
  51. ctx := context.Background()
  52. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  53. logic := NewProductDetailLogic(ctx, svcCtx)
  54. _, err := logic.ProductDetail(&types.ProductDetailReq{Id: 999999999})
  55. require.Error(t, err)
  56. var codeErr *response.CodeError
  57. require.True(t, errors.As(err, &codeErr))
  58. assert.Equal(t, 404, codeErr.Code())
  59. assert.Equal(t, "产品不存在", codeErr.Error())
  60. }