github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/core/rawdata/sqljson_test.go (about) 1 package rawdata 2 3 import ( 4 "database/sql" 5 "fmt" 6 "log" 7 "testing" 8 9 "github.com/lib/pq" 10 11 "github.com/benoitkugler/goACVE/logs" 12 ) 13 14 // MustConnectDBDev wraps ConnectDB for test on dev DB 15 func MustConnectDBDev() *sql.DB { 16 s, err := ConnectDB(logs.DBDev) 17 if err != nil { 18 log.Fatal(err) 19 } 20 return s 21 } 22 23 func TestArray(t *testing.T) { 24 db := MustConnectDBDev() 25 tx, err := db.Begin() 26 if err != nil { 27 t.Fatal(err) 28 } 29 ar := []int64{2, 5, 8, 9, 10} 30 _, err = tx.Query("SELECT * FROM personnes WHERE id = ANY($1)", pq.Int64Array(ar)) 31 if err != nil { 32 t.Fatal(err) 33 } 34 } 35 36 func TestJson(t *testing.T) { 37 db := MustConnectDBDev() 38 defer db.Close() 39 tx, err := db.Begin() 40 if err != nil { 41 t.Fatal(err) 42 } 43 defer tx.Rollback() 44 45 pers := randPersonne() 46 pers, err = pers.Insert(tx) 47 if err != nil { 48 t.Fatal(err) 49 } 50 51 req := "UPDATE personnes SET fiche_sanitaire = jsonb_set(fiche_sanitaire, '{mails}', array_to_json($1::varchar[])::jsonb) WHERE id = $2 RETURNING *" 52 r := tx.QueryRow(req, pq.StringArray([]string{"kmdls", "dmlskds"}), pers.Id) 53 part, err := ScanPersonne(r) 54 if err != nil { 55 t.Fatal(err) 56 } 57 fmt.Println(part.FicheSanitaire.Mails) 58 } 59 60 func TestScanNull(t *testing.T) { 61 db := MustConnectDBDev() 62 defer db.Close() 63 row := db.QueryRow("SELECT id, nom FROM personnes LIMIT 1") 64 var dummy interface{} 65 err := row.Scan(&dummy, &dummy) 66 fmt.Println(err, dummy) 67 }