github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/message/jobresult_test.go (about) 1 package message 2 3 import "testing" 4 5 func TestJobResult_実行結果メッセージをパースできる(t *testing.T) { 6 message := `{ 7 "type":"jobresult", 8 "version":"1.2.3", 9 "nid":1234, 10 "jid":"job1", 11 "rc":10, 12 "stat":2, 13 "var":"somevalue", 14 "st":"2015-03-26 13:21:15.000", 15 "et":"2015-03-26 19:21:36.000" 16 }` 17 18 var j JobResult 19 err := j.ParseJSON(message) 20 if err != nil { 21 t.Fatalf("想定外のエラーが発生しました: %s", err) 22 } 23 24 if j.Version != `1.2.3` { 25 t.Errorf("取得したversionの値が違います: %s", j.Version) 26 } 27 if j.NID != 1234 { 28 t.Errorf("取得したnidの値が違います: %d", j.NID) 29 } 30 if j.JID != `job1` { 31 t.Errorf("取得したjidの値が違います: %s", j.JID) 32 } 33 if j.RC != 10 { 34 t.Errorf("取得したrcの値が違います: %d", j.RC) 35 } 36 if j.Stat != 2 { 37 t.Errorf("取得したstatの値が違います: %d", j.Stat) 38 } 39 if j.Var != `somevalue` { 40 t.Errorf("取得したvarの値が違います: %s", j.Var) 41 } 42 if j.St != `2015-03-26 13:21:15.000` { 43 t.Errorf("取得したstの値が違います: %s", j.St) 44 } 45 if j.Et != `2015-03-26 19:21:36.000` { 46 t.Errorf("取得したetの値が違います: %s", j.Et) 47 } 48 } 49 50 func TestJobResult_JSON文字列としてパースできない場合はエラーが発生する(t *testing.T) { 51 message := ` 52 "type":"jobresult", 53 "version":"1.2.3", 54 "nid":1234, 55 "jid":"job1", 56 "rc":10, 57 "stat":2, 58 "var":"somevalue", 59 "st":"2015-03-26 13:21:15.000", 60 "et":"2015-03-26 19:21:36.000" 61 }` 62 63 var j JobResult 64 err := j.ParseJSON(message) 65 66 if err == nil { 67 t.Error("発生すべきエラーが発生しませんでした。") 68 } 69 } 70 71 func TestJobResult_typeが違う場合はエラーが発生する(t *testing.T) { 72 message := `{ 73 "type":"response", 74 "version":"1.2.3", 75 "nid":1234, 76 "jid":"job1", 77 "rc":10, 78 "stat":2, 79 "var":"somevalue", 80 "st":"2015-03-26 13:21:15.000", 81 "et":"2015-03-26 19:21:36.000" 82 }` 83 84 var j JobResult 85 err := j.ParseJSON(message) 86 87 if err == nil { 88 t.Error("発生すべきエラーが発生しませんでした。") 89 } 90 } 91 92 func TestJobResult_プロパティ値からJSONメッセージを生成できる(t *testing.T) { 93 ServantVersion = "1.2.3" 94 95 var j JobResult 96 j.NID = 1234 97 j.JID = `job1` 98 j.RC = 10 99 j.Stat = 2 100 j.Var = `somevalue` 101 j.St = `2015-03-26 13:21:15.000` 102 j.Et = `2015-03-26 19:21:16.000` 103 104 msg, err := j.GenerateJSON() 105 106 if err != nil { 107 t.Fatalf("想定外のエラーが発生しました: %s", err) 108 } 109 110 expect := `{"type":"jobresult","version":"1.2.3","nid":1234,"jid":"job1","rc":10,"stat":2,"var":"somevalue","st":"2015-03-26 13:21:15.000","et":"2015-03-26 19:21:16.000"}` 111 if msg != expect { 112 t.Error("生成されたJSONメッセージが想定値と違います") 113 t.Logf("生成値: %s", msg) 114 t.Logf("想定値: %s", expect) 115 } 116 }