github.com/calavera/json_generate@v0.0.0-20150116195211-6949016f3624/simple_example_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "path" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestGenerateWithFile(t *testing.T) { 14 temp, err := ioutil.TempDir("", "json-") 15 if !assert.NoError(t, err) { 16 return 17 } 18 defer os.RemoveAll(temp) 19 20 cwd, err := os.Getwd() 21 if !assert.NoError(t, err) { 22 return 23 } 24 25 out := path.Join(temp, "simple_json.go") 26 root := path.Join(cwd, "examples") 27 simple := path.Join(root, "simple.go") 28 29 w := newWalker([]string{}, nil, nil) 30 w.generate(out, root, simple) 31 32 assertGeneratedOutput(t, out) 33 } 34 35 func TestGenerateStructsWithFile(t *testing.T) { 36 temp, err := ioutil.TempDir("", "json-") 37 if !assert.NoError(t, err) { 38 return 39 } 40 defer os.RemoveAll(temp) 41 42 cwd, err := os.Getwd() 43 if !assert.NoError(t, err) { 44 return 45 } 46 47 out := path.Join(temp, "simple_json.go") 48 root := path.Join(cwd, "examples") 49 simple := path.Join(root, "simple.go") 50 51 generateStructs("", "", "", out, simple) 52 53 assertGeneratedOutput(t, out) 54 } 55 56 func TestGenerateStructsWithDir(t *testing.T) { 57 temp, err := ioutil.TempDir("", "json-") 58 if !assert.NoError(t, err) { 59 return 60 } 61 defer os.RemoveAll(temp) 62 63 cwd, err := os.Getwd() 64 if !assert.NoError(t, err) { 65 return 66 } 67 68 out := path.Join(temp, "simple_json.go") 69 root := path.Join(cwd, "examples") 70 71 generateStructs("", "", "", out, root) 72 73 assertGeneratedOutput(t, out) 74 } 75 76 func TestGenerateStructsWithExamples(t *testing.T) { 77 temp, err := ioutil.TempDir("", "json-") 78 if !assert.NoError(t, err) { 79 return 80 } 81 defer os.RemoveAll(temp) 82 83 cwd, err := os.Getwd() 84 if !assert.NoError(t, err) { 85 return 86 } 87 88 out := path.Join(temp, "simple_json.go") 89 root := path.Join(cwd, "examples") 90 91 generateStructs("User", "", "", out, root) 92 93 assertGeneratedOutput(t, out) 94 } 95 96 func TestGenerateStructsWithoutRoot(t *testing.T) { 97 temp, err := ioutil.TempDir("", "json-") 98 if !assert.NoError(t, err) { 99 return 100 } 101 defer os.RemoveAll(temp) 102 103 cwd, err := os.Getwd() 104 if !assert.NoError(t, err) { 105 return 106 } 107 root := path.Join(cwd, "examples") 108 err = os.Chdir(root) 109 if !assert.NoError(t, err) { 110 return 111 } 112 defer os.Chdir(cwd) 113 114 out := path.Join(temp, "simple_json.go") 115 116 generateStructs("User", "", "", out) 117 118 assertGeneratedOutput(t, out) 119 } 120 121 func assertGeneratedOutput(t *testing.T, out string) { 122 _, err := os.Stat(out) 123 if !assert.NoError(t, err) { 124 return 125 } 126 127 content, err := ioutil.ReadFile(out) 128 if !assert.NoError(t, err) { 129 return 130 } 131 132 fields := "Name string `json:\"name,omitempty\"`" 133 expected := fmt.Sprintf(`// generated by json_generate; DO NOT EDIT 134 package examples 135 136 type User struct { 137 %s 138 }`, fields) 139 140 assert.Equal(t, string(content), expected) 141 }