151 lines
3.3 KiB
Go
151 lines
3.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"math/rand"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/breel-render/spoc-bot-vr/model"
|
|
)
|
|
|
|
func TestStorage(t *testing.T) {
|
|
ctx, can := context.WithTimeout(context.Background(), time.Minute)
|
|
defer can()
|
|
|
|
s, err := NewStorage(ctx, NewTestDriver(t))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Run("upsert get event", func(t *testing.T) {
|
|
m := model.NewEvent(
|
|
"ID",
|
|
"URL",
|
|
1,
|
|
"Name",
|
|
"Asset",
|
|
"Datacenter",
|
|
"Team",
|
|
true,
|
|
)
|
|
|
|
if err := s.UpsertEvent(ctx, m); err != nil {
|
|
t.Fatal("unexpected error on insert:", err)
|
|
} else if err := s.UpsertEvent(ctx, m); err != nil {
|
|
t.Fatal("unexpected error on noop update:", err)
|
|
}
|
|
|
|
if got, err := s.GetEvent(ctx, m.ID); err != nil {
|
|
t.Fatal("unexpected error on get:", err)
|
|
} else if got != m {
|
|
t.Fatal("unexpected result from get:", got)
|
|
}
|
|
})
|
|
|
|
t.Run("upsert get thread", func(t *testing.T) {
|
|
m := model.NewThread(
|
|
"ID",
|
|
"URL",
|
|
1,
|
|
"Channel",
|
|
"EventID",
|
|
)
|
|
|
|
if err := s.UpsertThread(ctx, m); err != nil {
|
|
t.Fatal("unexpected error on insert:", err)
|
|
} else if err := s.UpsertThread(ctx, m); err != nil {
|
|
t.Fatal("unexpected error on noop update:", err)
|
|
}
|
|
|
|
if got, err := s.GetThread(ctx, m.ID); err != nil {
|
|
t.Fatal("unexpected error on get:", err)
|
|
} else if got != m {
|
|
t.Fatal("unexpected result from get:", got)
|
|
}
|
|
})
|
|
|
|
t.Run("upsert get message", func(t *testing.T) {
|
|
m := model.NewMessage(
|
|
"ID",
|
|
1,
|
|
"Author",
|
|
"Plaintext",
|
|
"ThreadID",
|
|
)
|
|
|
|
if err := s.UpsertMessage(ctx, m); err != nil {
|
|
t.Fatal("unexpected error on insert:", err)
|
|
} else if err := s.UpsertMessage(ctx, m); err != nil {
|
|
t.Fatal("unexpected error on noop update:", err)
|
|
}
|
|
|
|
if got, err := s.GetMessage(ctx, m.ID); err != nil {
|
|
t.Fatal("unexpected error on get:", err)
|
|
} else if got != m {
|
|
t.Fatal("unexpected result from get:", got)
|
|
}
|
|
})
|
|
|
|
t.Run("get thread messages", func(t *testing.T) {
|
|
thread := fmt.Sprintf("thread-%d", rand.Int())
|
|
m := model.NewMessage(
|
|
"ID",
|
|
1,
|
|
"Author",
|
|
"Plaintext",
|
|
thread,
|
|
)
|
|
|
|
if err := s.UpsertMessage(ctx, m); err != nil {
|
|
t.Fatal("unexpected error on insert:", err)
|
|
} else if m2, err := s.GetMessage(ctx, m.ID); err != nil {
|
|
t.Fatal("unexpected error on upsert-get:", err)
|
|
} else if m2 != m {
|
|
t.Errorf("expected %+v but got %+v", m, m2)
|
|
}
|
|
|
|
msgs, err := s.GetThreadMessages(ctx, thread)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
} else if len(msgs) != 1 {
|
|
t.Fatal(msgs)
|
|
} else if msgs[0].ThreadID != m.ThreadID {
|
|
t.Fatal(msgs[0].ThreadID)
|
|
} else if msgs[0] != m {
|
|
t.Fatalf("wanted msgs like %+v but got %+v", m, msgs[0])
|
|
}
|
|
})
|
|
|
|
t.Run("get event threads", func(t *testing.T) {
|
|
event := fmt.Sprintf("event-%d", rand.Int())
|
|
m := model.NewThread(
|
|
"ID",
|
|
"URL",
|
|
1,
|
|
"Channel",
|
|
event,
|
|
)
|
|
|
|
if err := s.UpsertThread(ctx, m); err != nil {
|
|
t.Fatal("unexpected error on insert:", err)
|
|
} else if m2, err := s.GetThread(ctx, m.ID); err != nil {
|
|
t.Fatal("unexpected error on upsert-get:", err)
|
|
} else if m2 != m {
|
|
t.Errorf("expected %+v but got %+v", m, m2)
|
|
}
|
|
|
|
msgs, err := s.GetEventThreads(ctx, event)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
} else if len(msgs) != 1 {
|
|
t.Fatal(msgs)
|
|
} else if msgs[0].EventID != m.EventID {
|
|
t.Fatal(msgs[0].EventID)
|
|
} else if msgs[0] != m {
|
|
t.Fatalf("wanted msgs like %+v but got %+v", m, msgs[0])
|
|
}
|
|
})
|
|
}
|