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  }