json_test.go 1019 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package store_test
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/TecharoHQ/anubis/lib/store"
  6. "github.com/TecharoHQ/anubis/lib/store/memory"
  7. )
  8. func TestJSON(t *testing.T) {
  9. type data struct {
  10. ID string `json:"id"`
  11. }
  12. st := memory.New(t.Context())
  13. db := store.JSON[data]{
  14. Underlying: st,
  15. Prefix: "foo:",
  16. }
  17. if err := db.Set(t.Context(), "test", data{ID: t.Name()}, time.Minute); err != nil {
  18. t.Fatal(err)
  19. }
  20. got, err := db.Get(t.Context(), "test")
  21. if err != nil {
  22. t.Fatal(err)
  23. }
  24. if got.ID != t.Name() {
  25. t.Fatalf("got wrong data for key \"test\", wanted %q but got: %q", t.Name(), got.ID)
  26. }
  27. if err := db.Delete(t.Context(), "test"); err != nil {
  28. t.Fatal(err)
  29. }
  30. if _, err := db.Get(t.Context(), "test"); err == nil {
  31. t.Fatal("wanted invalid get to fail, it did not")
  32. }
  33. if err := st.Set(t.Context(), "foo:test", []byte("}"), time.Minute); err != nil {
  34. t.Fatal(err)
  35. }
  36. if _, err := db.Get(t.Context(), "test"); err == nil {
  37. t.Fatal("wanted invalid get to fail, it did not")
  38. }
  39. }