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  }