github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/show/gen/csv_test.go (about) 1 // Copyright 2015 unirita Inc. 2 // Created 2015/04/10 shanxia 3 4 package gen 5 6 import ( 7 "bufio" 8 "os" 9 "testing" 10 ) 11 12 const output_csvfile string = "showtest.csv" 13 14 func CreateTestData() *OutputRoot { 15 var jobs []*OutputJob 16 17 job := &OutputJob{} 18 job.JobId = "job1" 19 job.Jobname = "jobName1" 20 job.StartDate = "2015-04-27 14:15:24.999" 21 job.EndDate = "2015-04-27 14:25:24.999" 22 job.Status = 1 23 job.Detail = "NORMAL" 24 job.Rc = 0 25 job.Node = "localhost" 26 job.Port = 2015 27 job.Variable = "Var1" 28 job.CreateDate = "2015-04-27 14:15:24.999" 29 job.UpdateDate = "2015-04-27 14:25:24.999" 30 jobs = append(jobs, job) 31 32 job = &OutputJob{} 33 job.JobId = "job2" 34 job.Jobname = "jobName2" 35 job.StartDate = "2015-04-27 14:15:24.999" 36 job.EndDate = "2015-04-27 14:25:24.999" 37 job.Status = 2 38 job.Detail = "ABNORMAL" 39 job.Rc = 1 40 job.Node = "localhost" 41 job.Port = 2015 42 job.Variable = "Var2" 43 job.CreateDate = "2015-04-27 14:15:24.999" 44 job.UpdateDate = "2015-04-27 14:25:24.999" 45 jobs = append(jobs, job) 46 47 jnet := &OutputJobNet{} 48 jnet.Id = 101 49 jnet.Jobnetwork = "jn101" 50 jnet.StartDate = "2015-04-27 14:15:24.999" 51 jnet.EndDate = "2015-04-27 14:25:24.999" 52 jnet.Detail = "" 53 jnet.Status = 1 54 jnet.CreateDate = "2015-04-27 14:15:24.999" 55 jnet.UpdateDate = "2015-04-27 14:25:24.999" 56 jnet.Jobs = jobs 57 58 root := &OutputRoot{} 59 root.Jobnetworks = append(root.Jobnetworks, jnet) 60 return root 61 } 62 63 func TestGenerate_CSV形式にジェネレート(t *testing.T) { 64 d := CreateTestData() 65 66 var gen CsvGenerator 67 msg, err := gen.Generate(d) 68 if err != nil { 69 t.Fatalf("エラーが返りました。 - %v", err) 70 } 71 if _, exist := os.Stat(output_csvfile); exist == nil { 72 os.Remove(output_csvfile) 73 } 74 file, err := os.OpenFile(output_csvfile, os.O_CREATE|os.O_WRONLY, 0666) 75 if err != nil { 76 t.Fatalf("テスト出力ファイルの生成に失敗しました。 - %v", err) 77 } 78 _, err = file.WriteString(msg) 79 if err != nil { 80 t.Fatalf("テスト出力に失敗しました。 - %v", err) 81 } 82 file.Close() 83 file, _ = os.Open(output_csvfile) 84 defer file.Close() 85 86 scanner := bufio.NewScanner(file) 87 var line string 88 var i int = 0 89 for scanner.Scan() { 90 line = scanner.Text() 91 if i == 0 { 92 if line != "#Type,JobNetwork ID,JobNetwork Name,Start Date,End Date,Status,Detail Message,Create Date,Update Date" { 93 t.Errorf("不正な行です。[%v]", line) 94 } 95 } else if i == 1 { 96 if line != "JOBNET,101,jn101,2015-04-27 14:15:24.999,2015-04-27 14:25:24.999,1,,2015-04-27 14:15:24.999,2015-04-27 14:25:24.999" { 97 t.Errorf("不正な行です。[%v]", line) 98 } 99 100 } else if i == 2 { 101 if line != "#Type,JobNework ID,Job ID,Job Name,Start Date,End Date,Status,Detail Message,Return Code,Node,Port,Variable,CreateDate,Update Date" { 102 t.Errorf("不正な行です。[%v]", line) 103 } 104 } else if i == 3 { 105 if line != "JOB,101,job1,jobName1,2015-04-27 14:15:24.999,2015-04-27 14:25:24.999,1,NORMAL,0,localhost,2015,Var1,2015-04-27 14:15:24.999,2015-04-27 14:25:24.999" { 106 t.Errorf("不正な行です。[%v]", line) 107 } 108 } else if i == 4 { 109 if line != "JOB,101,job2,jobName2,2015-04-27 14:15:24.999,2015-04-27 14:25:24.999,2,ABNORMAL,1,localhost,2015,Var2,2015-04-27 14:15:24.999,2015-04-27 14:25:24.999" { 110 t.Errorf("不正な行です。[%v]", line) 111 } 112 } 113 i++ 114 } 115 }