github.com/lenfree/buffalo@v0.7.3-0.20170207163156-891616ea4064/buffalo/cmd/generate/action_test.go (about) 1 package generate 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/spf13/cobra" 10 "github.com/stretchr/testify/require" 11 ) 12 13 func init() { 14 runningTests = true 15 } 16 17 func TestGenerateActionArgsComplete(t *testing.T) { 18 dir := os.TempDir() 19 packagePath := filepath.Join(dir, "src", "sample") 20 os.MkdirAll(packagePath, 0755) 21 os.Chdir(packagePath) 22 23 r := require.New(t) 24 25 cmd := cobra.Command{} 26 27 e := ActionCmd.RunE(&cmd, []string{}) 28 r.NotNil(e) 29 30 e = ActionCmd.RunE(&cmd, []string{"users"}) 31 r.NotNil(e) 32 33 os.Mkdir("actions", 0755) 34 ioutil.WriteFile("actions/app.go", appGo, 0755) 35 36 e = ActionCmd.RunE(&cmd, []string{"users", "show"}) 37 r.Nil(e) 38 } 39 40 func TestGenerateActionActionsFolderExists(t *testing.T) { 41 dir := os.TempDir() 42 packagePath := filepath.Join(dir, "src", "sample") 43 os.MkdirAll(packagePath, 0755) 44 os.Chdir(packagePath) 45 46 os.RemoveAll("actions") 47 os.RemoveAll("templates") 48 49 r := require.New(t) 50 cmd := cobra.Command{} 51 52 e := ActionCmd.RunE(&cmd, []string{"users", "show", "edit"}) 53 r.NotNil(e) 54 55 os.Mkdir("actions", 0755) 56 ioutil.WriteFile("actions/app.go", appGo, 0755) 57 58 e = ActionCmd.RunE(&cmd, []string{"users", "show", "edit"}) 59 r.Nil(e) 60 61 data, _ := ioutil.ReadFile("actions/users.go") 62 r.Contains(string(data), "package actions") 63 r.Contains(string(data), `import "github.com/gobuffalo/buffalo"`) 64 r.Contains(string(data), "func UsersShow(c buffalo.Context) error {") 65 r.Contains(string(data), "func UsersEdit(c buffalo.Context) error {") 66 r.Contains(string(data), `r.HTML("users/edit.html")`) 67 r.Contains(string(data), `c.Render(200, r.HTML("users/show.html"))`) 68 69 data, _ = ioutil.ReadFile("templates/users/show.html") 70 r.Contains(string(data), "<h1>Users#Show</h1>") 71 } 72 73 func TestGenerateActionActionsFileExists(t *testing.T) { 74 dir := os.TempDir() 75 packagePath := filepath.Join(dir, "src", "sample") 76 os.MkdirAll(packagePath, 0755) 77 os.Chdir(packagePath) 78 79 os.Mkdir("actions", 0755) 80 ioutil.WriteFile("actions/app.go", appGo, 0755) 81 r := require.New(t) 82 cmd := cobra.Command{} 83 usersContent := `package actions 84 import "log" 85 86 func UsersShow(c buffalo.Context) error { 87 log.Println("Something Here!") 88 return c.Render(200, r.String("OK")) 89 } 90 ` 91 ioutil.WriteFile("actions/users.go", []byte(usersContent), 0755) 92 93 e := ActionCmd.RunE(&cmd, []string{"users", "show"}) 94 r.Nil(e) 95 96 data, _ := ioutil.ReadFile("actions/users.go") 97 r.Contains(string(data), "log.Println(") 98 r.Contains(string(data), "func UsersShow") 99 100 } 101 102 func TestGenerateNewActionWithExistingActions(t *testing.T) { 103 dir := os.TempDir() 104 packagePath := filepath.Join(dir, "src", "sample") 105 os.MkdirAll(packagePath, 0755) 106 os.Chdir(packagePath) 107 108 os.RemoveAll("actions") 109 os.RemoveAll("templates") 110 111 os.Mkdir("actions", 0755) 112 ioutil.WriteFile("actions/app.go", appGo, 0755) 113 r := require.New(t) 114 cmd := cobra.Command{} 115 e := ActionCmd.RunE(&cmd, []string{"users", "show", "edit"}) 116 r.Nil(e) 117 118 data, _ := ioutil.ReadFile("actions/users.go") 119 r.Contains(string(data), "package actions") 120 r.Contains(string(data), `import "github.com/gobuffalo/buffalo"`) 121 r.Contains(string(data), "func UsersShow(c buffalo.Context) error {") 122 r.Contains(string(data), "func UsersEdit(c buffalo.Context) error {") 123 r.Contains(string(data), `r.HTML("users/edit.html")`) 124 r.Contains(string(data), `c.Render(200, r.HTML("users/show.html"))`) 125 126 e = ActionCmd.RunE(&cmd, []string{"users", "list"}) 127 r.Nil(e) 128 129 data, _ = ioutil.ReadFile("actions/users.go") 130 r.Contains(string(data), "package actions") 131 r.Contains(string(data), `import "github.com/gobuffalo/buffalo"`) 132 r.Contains(string(data), "func UsersShow(c buffalo.Context) error {") 133 r.Contains(string(data), "func UsersEdit(c buffalo.Context) error {") 134 r.Contains(string(data), "func UsersList(c buffalo.Context) error {") 135 r.Contains(string(data), `r.HTML("users/list.html")`) 136 r.Contains(string(data), `c.Render(200, r.HTML("users/list.html"))`) 137 138 data, _ = ioutil.ReadFile("templates/users/list.html") 139 r.Contains(string(data), "<h1>Users#List</h1>") 140 141 data, _ = ioutil.ReadFile("actions/users_test.go") 142 r.Contains(string(data), "package actions_test") 143 r.Contains(string(data), `import ( 144 "testing" 145 146 "github.com/stretchr/testify/require" 147 )`) 148 r.Contains(string(data), "func Test_Users_Show(t *testing.T) {") 149 r.Contains(string(data), "func Test_Users_Edit(t *testing.T) {") 150 r.Contains(string(data), "func Test_Users_List(t *testing.T) {") 151 } 152 153 var appGo = []byte(` 154 package actions 155 var app *buffalo.App 156 func App() *buffalo.App { 157 if app == nil { 158 app = buffalo.Automatic(buffalo.Options{ 159 Env: "test", 160 }) 161 app.GET("/", func (c buffalo.Context) error { 162 return c.Render(200, r.String("hello")) 163 }) 164 } 165 166 return app 167 } 168 `)