github.com/neugram/ng@v0.0.0-20180309130942-d472ff93d872/frame/sqlframe/sqlframe_test.go (about) 1 // Copyright 2015 The Neugram Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package sqlframe 6 7 import ( 8 "database/sql" 9 "io/ioutil" 10 "os" 11 "testing" 12 13 _ "github.com/mattn/go-sqlite3" 14 "neugram.io/ng/frame/internal/frametest" 15 ) 16 17 func createDB(t *testing.T) (db *sql.DB, cleanup func()) { 18 dbfile, err := ioutil.TempFile("", "sqlframe-sqlite-") 19 if err != nil { 20 t.Fatal(err) 21 } 22 dbfile.Close() 23 os.Remove(dbfile.Name()) 24 25 db, err = sql.Open("sqlite3", dbfile.Name()) 26 if err != nil { 27 t.Fatal(err) 28 } 29 30 return db, func() { 31 db.Close() 32 os.Remove(dbfile.Name()) 33 } 34 } 35 36 func TestLoadPresidents(t *testing.T) { 37 db, cleanup := createDB(t) 38 defer cleanup() 39 40 txt := ` 41 create table Presidents ( 42 ID integer not null primary key, 43 Name text, 44 Term1 int, 45 Term2 int 46 );` 47 if _, err := db.Exec(txt); err != nil { 48 t.Fatal(err) 49 } 50 f, err := Load(db, "Presidents") 51 if err != nil { 52 t.Fatal(err) 53 } 54 frametest.LoadPresidents(t, f) 55 } 56 57 func TestLoadPresidentsNoPK(t *testing.T) { 58 db, cleanup := createDB(t) 59 defer cleanup() 60 61 txt := ` 62 create table Presidents ( 63 ID integer, 64 Name text, 65 Term1 int, 66 Term2 int 67 );` 68 if _, err := db.Exec(txt); err != nil { 69 t.Fatal(err) 70 } 71 f, err := Load(db, "Presidents") 72 if err != nil { 73 t.Fatal(err) 74 } 75 frametest.LoadPresidents(t, f) 76 } 77 78 // TODO wrap sqlframe in dummy frame, use default impls. 79 // func TestLoadPresidentsNoSpec(t *testing.T)