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

     1  // Copyright 2015 unirita Inc.
     2  // Created 2015/04/10 shanxia
     3  
     4  package query
     5  
     6  import (
     7  	"path/filepath"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/unirita/cuto/db"
    12  	"github.com/unirita/cuto/testutil"
    13  )
    14  
    15  // テストDB名
    16  var (
    17  	db_root = filepath.Join(testutil.GetBaseDir(), "db", "query", "_testdata")
    18  	db_name = filepath.Join(db_root, "test_q.sqlite")
    19  	conn    = dbOpen()
    20  
    21  	all_jobnetNum = 6
    22  )
    23  
    24  func dbOpen() db.IConnection {
    25  	c, err := db.Open(db_name)
    26  	if err != nil {
    27  		panic(err)
    28  	}
    29  	return c
    30  }
    31  
    32  func TestJobnetworkCountAll_件数取得(t *testing.T) {
    33  	num := JobnetworkCountAll(conn)
    34  	if num != all_jobnetNum {
    35  		t.Errorf("テストデータが%v件のはずが、[%v]件が返ってきました。", all_jobnetNum, num)
    36  	}
    37  }
    38  
    39  func TestGetJobnetwork_1件取得(t *testing.T) {
    40  	result, err := GetJobnetwork(conn, 2)
    41  	if err != nil {
    42  		t.Error("ジョブ取得時にエラーが返ってきました。 - ", err)
    43  	}
    44  	if result.ID != 2 {
    45  		t.Errorf("指定と異なるジョブネットID[%v]が返ってきました。", result.ID)
    46  	}
    47  	if result.JobnetWork != "ジョブネット2" {
    48  		t.Errorf("指定と異なるジョブネット[%v]が返ってきました。", result.JobnetWork)
    49  	}
    50  	if result.Status != 0 {
    51  		t.Errorf("指定と異なるジョブネットのステータス[%v]が返ってきました。", result.Status)
    52  	}
    53  }
    54  
    55  func TestGetJobnetwork_0件取得(t *testing.T) {
    56  	result, err := GetJobnetwork(conn, 999)
    57  	if err == nil {
    58  		t.Error("ジョブ取得時に失敗しても、エラーが返ってきませんでした。")
    59  	}
    60  	if result != nil {
    61  		t.Error("ジョブが0件なのにnilが返りませんでした。")
    62  	}
    63  }
    64  
    65  func TestGetJobnetwork_クエリ発行に失敗(t *testing.T) {
    66  	_, err := GetJobnetwork(nil, 999)
    67  	if err == nil {
    68  		t.Error("ダミーのコネクションを渡しても、エラーが返ってきませんでした。")
    69  	}
    70  }
    71  
    72  func TestGetJobnetworkListFromName_41件取得(t *testing.T) {
    73  	const jobnet string = "ジョブネット1"
    74  	const count int = 2
    75  
    76  	results, err := GetJobnetworkListFromName(conn, jobnet, ORDERBY_DESC)
    77  	if err != nil {
    78  		t.Error("ジョブ取得時にエラーが返りました。 - ", err)
    79  	}
    80  	if len(results) != count {
    81  		t.Errorf("ジョブが%v件の想定ですが、返ってきたのは[%v]件でした。", count, len(results))
    82  	}
    83  	if results[0].ID != 5 {
    84  		t.Errorf("1件目のジョブネットIDは5の想定ですが、%vが返りました。", results[0].ID)
    85  	}
    86  	if results[1].ID != 1 {
    87  		t.Errorf("1件目のジョブネットIDは5の想定ですが、%vが返りました。", results[0].ID)
    88  	}
    89  }
    90  
    91  func TestGetJobnetworkList_2件取得(t *testing.T) {
    92  	query := CreateJobnetworkQuery(conn)
    93  	query.AddAndWhereJobnetwork("ジョブネット1")
    94  	query.AddOrderBy(ORDERBY_ASC)
    95  	if !strings.Contains(query.sql, "asc") {
    96  		t.Errorf("sqlが不正です。 - %v", query.sql)
    97  	}
    98  	results, err := query.GetJobnetworkList()
    99  	if err != nil {
   100  		t.Error("ジョブ取得時にエラーが返ってきました。 - ", err)
   101  	}
   102  	if len(results) != 2 {
   103  		t.Errorf("2件返ってくるべきところ、%v件が返ってきました。", len(results))
   104  	}
   105  	if results[1].ID != 5 {
   106  		t.Errorf("5が返ってくるべきところ、%vが返ってきました。", results[0].ID)
   107  	}
   108  	if results[0].ID != 1 {
   109  		t.Errorf("1が返ってくるべきところ、%vが返ってきました。", results[1].ID)
   110  	}
   111  }
   112  
   113  func TestGetJobnetworkList_クエリ不正(t *testing.T) {
   114  	query := CreateJobnetworkQuery(conn)
   115  	query.AddAndWhereJobnetwork("ジョブネット1")
   116  	query.AddOrderBy(ORDERBY_DESC)
   117  	if !strings.Contains(query.sql, "desc") {
   118  		t.Errorf("sqlが不正です。 - %v", query.sql)
   119  	}
   120  	query.sql = "abc" // 不正なクエリに書き換え
   121  	_, err := query.GetJobnetworkList()
   122  	if err == nil {
   123  		t.Error("不正なクエリを発行したのに、失敗しませんでした。")
   124  	}
   125  }
   126  
   127  func TestAddAndWhereLessThanStartdate_開始日より過去を取得(t *testing.T) {
   128  	query := CreateJobnetworkQuery(conn)
   129  	query.AddAndWhereLessThanStartdate("2015-04-17 09:08:07.000")
   130  	if !strings.Contains(query.sql, "STARTDATE < '2015-04-17 09:08:07.000'") {
   131  		t.Errorf("不正なSQLです。 - %v", query.sql)
   132  	}
   133  }
   134  
   135  func TestAddAndWhereMoreThanStartdate_開始日より過去を取得(t *testing.T) {
   136  	query := CreateJobnetworkQuery(conn)
   137  	query.AddAndWhereMoreThanStartdate("2015-04-17 09:08:07.000")
   138  	if !strings.Contains(query.sql, "'2015-04-17 09:08:07.000' < STARTDATE") {
   139  		t.Errorf("不正なSQLです。 - %v", query.sql)
   140  	}
   141  }
   142  
   143  func TestAddAndWhereStatus_Statusでフィルタ(t *testing.T) {
   144  	query := CreateJobnetworkQuery(conn)
   145  	query.AddAndWhereStatus(9)
   146  	if !strings.Contains(query.sql, "STATUS = 9") {
   147  		t.Errorf("不正なSQLです。 - %v", query.sql)
   148  	}
   149  }