command_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package redis_test
  2. import (
  3. "errors"
  4. "time"
  5. redis "github.com/go-redis/redis/v7"
  6. . "github.com/onsi/ginkgo"
  7. . "github.com/onsi/gomega"
  8. )
  9. var _ = Describe("Cmd", func() {
  10. var client *redis.Client
  11. BeforeEach(func() {
  12. client = redis.NewClient(redisOptions())
  13. Expect(client.FlushDB().Err()).NotTo(HaveOccurred())
  14. })
  15. AfterEach(func() {
  16. Expect(client.Close()).NotTo(HaveOccurred())
  17. })
  18. It("implements Stringer", func() {
  19. set := client.Set("foo", "bar", 0)
  20. Expect(set.String()).To(Equal("set foo bar: OK"))
  21. get := client.Get("foo")
  22. Expect(get.String()).To(Equal("get foo: bar"))
  23. })
  24. It("has val/err", func() {
  25. set := client.Set("key", "hello", 0)
  26. Expect(set.Err()).NotTo(HaveOccurred())
  27. Expect(set.Val()).To(Equal("OK"))
  28. get := client.Get("key")
  29. Expect(get.Err()).NotTo(HaveOccurred())
  30. Expect(get.Val()).To(Equal("hello"))
  31. Expect(set.Err()).NotTo(HaveOccurred())
  32. Expect(set.Val()).To(Equal("OK"))
  33. })
  34. It("has helpers", func() {
  35. set := client.Set("key", "10", 0)
  36. Expect(set.Err()).NotTo(HaveOccurred())
  37. n, err := client.Get("key").Int64()
  38. Expect(err).NotTo(HaveOccurred())
  39. Expect(n).To(Equal(int64(10)))
  40. un, err := client.Get("key").Uint64()
  41. Expect(err).NotTo(HaveOccurred())
  42. Expect(un).To(Equal(uint64(10)))
  43. f, err := client.Get("key").Float64()
  44. Expect(err).NotTo(HaveOccurred())
  45. Expect(f).To(Equal(float64(10)))
  46. })
  47. It("supports float32", func() {
  48. f := float32(66.97)
  49. err := client.Set("float_key", f, 0).Err()
  50. Expect(err).NotTo(HaveOccurred())
  51. val, err := client.Get("float_key").Float32()
  52. Expect(err).NotTo(HaveOccurred())
  53. Expect(val).To(Equal(f))
  54. })
  55. It("supports time.Time", func() {
  56. tm := time.Date(2019, 01, 01, 0, 0, 0, 0, time.UTC)
  57. err := client.Set("time_key", tm, 0).Err()
  58. Expect(err).NotTo(HaveOccurred())
  59. s, err := client.Get("time_key").Result()
  60. Expect(err).NotTo(HaveOccurred())
  61. Expect(s).To(Equal("2019-01-01T00:00:00Z"))
  62. tm2, err := client.Get("time_key").Time()
  63. Expect(err).NotTo(HaveOccurred())
  64. Expect(tm2).To(BeTemporally("==", tm))
  65. })
  66. It("allow to set custom error", func() {
  67. e := errors.New("custom error")
  68. cmd := redis.Cmd{}
  69. cmd.SetErr(e)
  70. _, err := cmd.Result()
  71. Expect(err).To(Equal(e))
  72. })
  73. })