redeem_cache_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //go:build unit
  2. package repository
  3. import (
  4. "math"
  5. "testing"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestRedeemRateLimitKey(t *testing.T) {
  9. tests := []struct {
  10. name string
  11. userID int64
  12. expected string
  13. }{
  14. {
  15. name: "normal_user_id",
  16. userID: 123,
  17. expected: "redeem:ratelimit:v2:123",
  18. },
  19. {
  20. name: "zero_user_id",
  21. userID: 0,
  22. expected: "redeem:ratelimit:v2:0",
  23. },
  24. {
  25. name: "negative_user_id",
  26. userID: -1,
  27. expected: "redeem:ratelimit:v2:-1",
  28. },
  29. {
  30. name: "max_int64",
  31. userID: math.MaxInt64,
  32. expected: "redeem:ratelimit:v2:9223372036854775807",
  33. },
  34. }
  35. for _, tc := range tests {
  36. t.Run(tc.name, func(t *testing.T) {
  37. got := redeemRateLimitKey(tc.userID)
  38. require.Equal(t, tc.expected, got)
  39. })
  40. }
  41. }
  42. func TestRedeemLockKey(t *testing.T) {
  43. tests := []struct {
  44. name string
  45. code string
  46. expected string
  47. }{
  48. {
  49. name: "normal_code",
  50. code: "ABC123",
  51. expected: "redeem:lock:ABC123",
  52. },
  53. {
  54. name: "empty_code",
  55. code: "",
  56. expected: "redeem:lock:",
  57. },
  58. {
  59. name: "code_with_special_chars",
  60. code: "CODE-2024:test",
  61. expected: "redeem:lock:CODE-2024:test",
  62. },
  63. }
  64. for _, tc := range tests {
  65. t.Run(tc.name, func(t *testing.T) {
  66. got := redeemLockKey(tc.code)
  67. require.Equal(t, tc.expected, got)
  68. })
  69. }
  70. }