github.com/tsmith1024/pop@v4.12.2+incompatible/dialect_sqlite_test.go (about) 1 // +build sqlite 2 3 package pop 4 5 import ( 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "testing" 10 11 "github.com/stretchr/testify/require" 12 ) 13 14 func Test_ConnectionDetails_Finalize_SQLite_URL_Only(t *testing.T) { 15 r := require.New(t) 16 17 cd := &ConnectionDetails{ 18 URL: "sqlite3:///tmp/foo.db", 19 } 20 err := cd.Finalize() // calls withURL() and urlParserSQLite3(cd) 21 r.NoError(err) 22 r.Equal("sqlite3", cd.Dialect, "given dialect: N/A") 23 r.Equal("/tmp/foo.db", cd.Database, "given url: sqlite3:///tmp/foo.db") 24 } 25 26 func Test_ConnectionDetails_Finalize_SQLite_SynURL_Only(t *testing.T) { 27 r := require.New(t) 28 29 cd := &ConnectionDetails{ 30 URL: "sqlite:///tmp/foo.db", 31 } 32 err := cd.Finalize() // calls withURL() and urlParserSQLite3(cd) 33 r.NoError(err) 34 r.Equal("sqlite3", cd.Dialect, "given dialect: N/A") 35 r.Equal("/tmp/foo.db", cd.Database, "given url: sqlite:///tmp/foo.db") 36 } 37 38 func Test_ConnectionDetails_Finalize_SQLite_Dialect_URL(t *testing.T) { 39 r := require.New(t) 40 cd := &ConnectionDetails{ 41 Dialect: "sqlite3", 42 URL: "sqlite3:///tmp/foo.db", 43 } 44 err := cd.Finalize() // calls withURL() and urlParserSQLite3(cd) 45 r.NoError(err) 46 r.Equal("sqlite3", cd.Dialect, "given dialect: sqlite3") 47 r.Equal("/tmp/foo.db", cd.Database, "given url: sqlite3:///tmp/foo.db") 48 } 49 50 func Test_ConnectionDetails_Finalize_SQLite_Dialect_SynURL(t *testing.T) { 51 r := require.New(t) 52 cd := &ConnectionDetails{ 53 Dialect: "sqlite3", 54 URL: "sqlite:///tmp/foo.db", 55 } 56 err := cd.Finalize() // calls withURL() and urlParserSQLite3(cd) 57 r.NoError(err) 58 r.Equal("sqlite3", cd.Dialect, "given dialect: sqlite3") 59 r.Equal("/tmp/foo.db", cd.Database, "given url: sqlite:///tmp/foo.db") 60 } 61 62 func Test_ConnectionDetails_Finalize_SQLite_Synonym_URL(t *testing.T) { 63 r := require.New(t) 64 cd := &ConnectionDetails{ 65 Dialect: "sqlite", 66 URL: "sqlite3:///tmp/foo.db", 67 } 68 err := cd.Finalize() // calls withURL() and urlParserSQLite3(cd) 69 r.NoError(err) 70 r.Equal("sqlite3", cd.Dialect, "given dialect: sqlite") 71 r.Equal("/tmp/foo.db", cd.Database, "given url: sqlite3:///tmp/foo.db") 72 } 73 74 func Test_ConnectionDetails_Finalize_SQLite_Synonym_SynURL(t *testing.T) { 75 r := require.New(t) 76 cd := &ConnectionDetails{ 77 Dialect: "sqlite", 78 URL: "sqlite:///tmp/foo.db", 79 } 80 err := cd.Finalize() // calls withURL() and urlParserSQLite3(cd) 81 r.NoError(err) 82 r.Equal("sqlite3", cd.Dialect, "given dialect: sqlite") 83 r.Equal("/tmp/foo.db", cd.Database, "given url: sqlite:///tmp/foo.db") 84 } 85 86 func Test_ConnectionDetails_Finalize_SQLite_Synonym_Path(t *testing.T) { 87 r := require.New(t) 88 cd := &ConnectionDetails{ 89 Dialect: "sqlite", 90 Database: "./foo.db", 91 } 92 err := cd.Finalize() // calls withURL() and urlParserSQLite3(cd) 93 r.NoError(err) 94 r.Equal("sqlite3", cd.Dialect, "given dialect: sqlite") 95 r.Equal("./foo.db", cd.Database, "given database: ./foo.db") 96 } 97 98 func Test_ConnectionDetails_FinalizeOSPath(t *testing.T) { 99 r := require.New(t) 100 d, err := ioutil.TempDir("", "") 101 r.NoError(err) 102 p := filepath.Join(d, "testdb.sqlite") 103 defer os.RemoveAll(p) 104 cd := &ConnectionDetails{ 105 Dialect: "sqlite", 106 Database: p, 107 } 108 r.NoError(cd.Finalize()) 109 r.Equal("sqlite3", cd.Dialect) 110 r.Equal(p, cd.Database) 111 }