chore: cleanup handle_test
This commit is contained in:
parent
30d3db9d5e
commit
e9b7f7ab4b
1 changed files with 55 additions and 44 deletions
|
@ -15,45 +15,57 @@ import (
|
|||
"github.com/jackc/pgx/v5"
|
||||
)
|
||||
|
||||
func withServer(f func(handler oas.Handler)) {
|
||||
func prepare(t *testing.T) oas.Handler {
|
||||
name := fmt.Sprintf("test%d", time.Now().Unix())
|
||||
|
||||
ctx := context.TODO()
|
||||
root, err := pgx.Connect(ctx, os.Getenv("DATABASE_URL"))
|
||||
connCfg, err := pgx.ParseConfig(os.Getenv("DATABASE_URL"))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
ctx := context.TODO()
|
||||
root, err := pgx.ConnectConfig(ctx, connCfg)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() {
|
||||
root.Close(ctx)
|
||||
})
|
||||
|
||||
if _, err = root.Exec(ctx, "CREATE DATABASE "+name+";"); err != nil {
|
||||
log.Fatal("failed to create database", name)
|
||||
t.Fatal("failed to create database", name)
|
||||
}
|
||||
defer func() {
|
||||
t.Cleanup(func() {
|
||||
root.Exec(ctx, "DROP DATABASE "+name+";")
|
||||
}()
|
||||
})
|
||||
|
||||
// TODO: substitute from DATABASE_URL instead
|
||||
conn, err := pgx.Connect(ctx, "postgres://short:short@localhost:5432/"+name)
|
||||
connCfg.Database = name
|
||||
conn, err := pgx.ConnectConfig(ctx, connCfg)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() {
|
||||
conn.Close(ctx)
|
||||
})
|
||||
|
||||
schema, err := os.ReadFile("../../sql/schema.sql")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
t.Fatal(err)
|
||||
}
|
||||
conn.Exec(ctx, string(schema))
|
||||
|
||||
f(api.NewHandler("http://test", db.New(conn)))
|
||||
conn.Close(ctx)
|
||||
return api.NewHandler("http://test", db.New(conn))
|
||||
}
|
||||
|
||||
func TestCreateURL(t *testing.T) {
|
||||
h := prepare(t)
|
||||
|
||||
cases := []string{
|
||||
"http://test.com",
|
||||
"http://github.com",
|
||||
"abcdef", // FIXME: should not pass but it works...
|
||||
}
|
||||
withServer(func(h oas.Handler) {
|
||||
|
||||
for _, url := range cases {
|
||||
shortenRes, err := h.CreateShortURL(context.TODO(), &oas.CreateShortURLReq{
|
||||
URL: url,
|
||||
|
@ -86,5 +98,4 @@ func TestCreateURL(t *testing.T) {
|
|||
t.Errorf("supplied %q but got %q during redirect", url, redirect.Location.Value)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue