59 lines
920 B
Go
59 lines
920 B
Go
package users
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
|
|
"gitlab.quimbo.fr/odwrtw/canape-sql/sqltest"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
"github.com/kr/pretty"
|
|
"github.com/lib/pq"
|
|
)
|
|
|
|
const drop = `DROP TABLE users;`
|
|
|
|
var db *sqlx.DB
|
|
|
|
func init() {
|
|
var err error
|
|
|
|
pgdsn := os.Getenv("POSTGRES_DSN")
|
|
db, err = sqlx.Connect("postgres", pgdsn)
|
|
|
|
if err != nil {
|
|
fmt.Printf("Unavailable PG tests:\n %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func TestAdd(t *testing.T) {
|
|
sqltest.RunWithSchema(db, usersCreate, drop, t, func(db *sqlx.DB, t *testing.T) {
|
|
|
|
// Add a new user
|
|
u := &User{Name: "plop"}
|
|
err := u.Add(db)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// Try add it twice
|
|
err = u.Add(db)
|
|
if err != nil {
|
|
if err, ok := err.(*pq.Error); ok {
|
|
if err.Code.Name() != "unique_violation" {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
} else {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
u, err = Get(db, "plop")
|
|
|
|
pretty.Println(err)
|
|
pretty.Println(u)
|
|
})
|
|
}
|