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  }