github.com/hy3/cuto@v0.9.8-0.20160830082821-aa6652f877b7/db/connection_test.go (about)

     1  // Copyright 2015 unirita Inc.
     2  // Created 2015/04/10 shanxia
     3  
     4  package db
     5  
     6  import (
     7  	"path/filepath"
     8  
     9  	"testing"
    10  
    11  	"github.com/unirita/cuto/testutil"
    12  )
    13  
    14  var (
    15  	dbfile = getDBFile()
    16  )
    17  
    18  func getDBFile() string {
    19  	return filepath.Join(testutil.GetBaseDir(), "db", "_testdata", "test.sqlite")
    20  }
    21  
    22  func TestOpen_DBコネクションがOpenできる(t *testing.T) {
    23  	con, err := Open(dbfile)
    24  	if err != nil {
    25  		t.Errorf("DBとの接続に失敗しました。 - %v", err)
    26  	} else if con == nil {
    27  		t.Error("Connectionオブジェクトがnilを返しました。")
    28  	}
    29  	defer con.Close()
    30  }
    31  
    32  func TestOpen_存在しないファイルを指定する(t *testing.T) {
    33  	testfile := "xxx.testDB"
    34  	con, err := Open(testfile)
    35  	if err == nil {
    36  		t.Errorf("DBとの接続に失敗しなければならないところ、成功が返りました。")
    37  	} else if con != nil {
    38  		defer con.Close()
    39  	}
    40  }
    41  
    42  func TestOpen_存在しないドライバを指定する(t *testing.T) {
    43  	bk := sqlite3_driver
    44  	sqlite3_driver = "sqlite2" // 存在しないドライバ名
    45  	defer func(driver string) {
    46  		sqlite3_driver = driver
    47  	}(bk)
    48  
    49  	con, err := Open(dbfile) // 存在しないDBファイルを指定しても成功してしまう。
    50  	if err == nil {
    51  		t.Errorf("エラーを返すべきところ、エラー情報がnilを返しました。")
    52  	}
    53  	if con != nil {
    54  		t.Error("エラーが返ってきたのに、connectionオブジェクトがnilではなかった。")
    55  	}
    56  }
    57  
    58  func TestGetDbMap_DBMapを取得する(t *testing.T) {
    59  	con, err := Open(dbfile)
    60  	if err != nil {
    61  		t.Fatalf("DBとの接続に失敗しました。 - %v", err)
    62  	} else if con == nil {
    63  		t.Fatal("Connectionオブジェクトがnilを返しました。")
    64  	}
    65  	defer con.Close()
    66  
    67  	if dbMap := con.GetDbMap(); dbMap == nil {
    68  		t.Error("DBMapが取得できません。")
    69  	}
    70  }
    71  
    72  func TestGetDb_DBオブジェクトを取得する(t *testing.T) {
    73  	con, err := Open(dbfile)
    74  	if err != nil {
    75  		t.Fatalf("DBとの接続に失敗しました。 - %v", err)
    76  	} else if con == nil {
    77  		t.Fatal("Connectionオブジェクトがnilを返しました。")
    78  	}
    79  	defer con.Close()
    80  
    81  	if db := con.GetDb(); db == nil {
    82  		t.Error("DBオブジェクトが取得できません。")
    83  	}
    84  }