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