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  }