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) }) }