github.com/duskeagle/pop@v4.10.1-0.20190417200916-92f2b794aab5+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  }