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 }