image_task_store_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package repository
  2. import (
  3. "context"
  4. "testing"
  5. "time"
  6. "github.com/Wei-Shaw/sub2api/internal/service"
  7. "github.com/alicebob/miniredis/v2"
  8. "github.com/redis/go-redis/v9"
  9. "github.com/stretchr/testify/require"
  10. )
  11. func TestImageTaskStoreRoundTripAndTTL(t *testing.T) {
  12. mr := miniredis.RunT(t)
  13. rdb := redis.NewClient(&redis.Options{Addr: mr.Addr()})
  14. t.Cleanup(func() { _ = rdb.Close() })
  15. store := NewImageTaskStore(rdb)
  16. task := &service.ImageTaskRecord{
  17. ID: "imgtask_123",
  18. UserID: 7,
  19. APIKeyID: 9,
  20. Status: service.ImageTaskStatusProcessing,
  21. CreatedAt: 100,
  22. ExpiresAt: 200,
  23. }
  24. require.NoError(t, store.Save(context.Background(), task, 24*time.Hour))
  25. got, err := store.Get(context.Background(), task.ID)
  26. require.NoError(t, err)
  27. require.Equal(t, task, got)
  28. require.Equal(t, 24*time.Hour, mr.TTL(imageTaskKey(task.ID)))
  29. }
  30. func TestImageTaskStoreMissing(t *testing.T) {
  31. mr := miniredis.RunT(t)
  32. rdb := redis.NewClient(&redis.Options{Addr: mr.Addr()})
  33. t.Cleanup(func() { _ = rdb.Close() })
  34. store := NewImageTaskStore(rdb)
  35. _, err := store.Get(context.Background(), "imgtask_missing")
  36. require.ErrorIs(t, err, service.ErrImageTaskNotFound)
  37. }