github.com/jasonish/buffalo@v0.8.2-0.20170413145823-bacbdd415f1b/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 TestGenerateActionArgsComplete(t *testing.T) { 14 dir := os.TempDir() 15 packagePath := filepath.Join(dir, "src", "sample") 16 os.MkdirAll(packagePath, 0755) 17 os.Chdir(packagePath) 18 19 r := require.New(t) 20 21 cmd := cobra.Command{} 22 23 e := ActionCmd.RunE(&cmd, []string{}) 24 r.NotNil(e) 25 26 e = ActionCmd.RunE(&cmd, []string{"nodes"}) 27 r.NotNil(e) 28 29 os.Mkdir("actions", 0755) 30 ioutil.WriteFile("actions/app.go", appGo, 0755) 31 32 e = ActionCmd.RunE(&cmd, []string{"nodes", "show"}) 33 r.Nil(e) 34 } 35 36 func TestGenerateActionActionsFolderExists(t *testing.T) { 37 dir := os.TempDir() 38 packagePath := filepath.Join(dir, "src", "sample") 39 os.MkdirAll(packagePath, 0755) 40 os.Chdir(packagePath) 41 42 os.RemoveAll("actions") 43 os.RemoveAll("templates") 44 45 r := require.New(t) 46 cmd := cobra.Command{} 47 48 e := ActionCmd.RunE(&cmd, []string{"comments", "show", "edit"}) 49 r.NotNil(e) 50 51 os.Mkdir("actions", 0755) 52 ioutil.WriteFile("actions/app.go", appGo, 0755) 53 54 e = ActionCmd.RunE(&cmd, []string{"comments", "show", "edit"}) 55 r.Nil(e) 56 57 data, _ := ioutil.ReadFile("actions/comments.go") 58 r.Contains(string(data), "package actions") 59 r.Contains(string(data), `import "github.com/gobuffalo/buffalo"`) 60 r.Contains(string(data), "func CommentsShow(c buffalo.Context) error {") 61 r.Contains(string(data), "func CommentsEdit(c buffalo.Context) error {") 62 r.Contains(string(data), `r.HTML("comments/edit.html")`) 63 r.Contains(string(data), `c.Render(200, r.HTML("comments/show.html"))`) 64 65 data, _ = ioutil.ReadFile("templates/comments/show.html") 66 r.Contains(string(data), "<h1>Comments#Show</h1>") 67 } 68 69 func TestGenerateActionActionsFileExists(t *testing.T) { 70 dir := os.TempDir() 71 packagePath := filepath.Join(dir, "src", "sample") 72 os.MkdirAll(packagePath, 0755) 73 os.Chdir(packagePath) 74 75 os.Mkdir("actions", 0755) 76 ioutil.WriteFile("actions/app.go", appGo, 0755) 77 r := require.New(t) 78 cmd := cobra.Command{} 79 usersContent := `package actions 80 import "log" 81 82 func UsersShow(c buffalo.Context) error { 83 log.Println("Something Here!") 84 return c.Render(200, r.String("OK")) 85 } 86 ` 87 ioutil.WriteFile("actions/users.go", []byte(usersContent), 0755) 88 89 e := ActionCmd.RunE(&cmd, []string{"users", "show"}) 90 r.Nil(e) 91 92 data, _ := ioutil.ReadFile("actions/users.go") 93 r.Contains(string(data), "log.Println(") 94 r.Contains(string(data), "func UsersShow") 95 96 } 97 98 func TestGenerateNewActionWithExistingActions(t *testing.T) { 99 dir := os.TempDir() 100 packagePath := filepath.Join(dir, "src", "sample") 101 os.MkdirAll(packagePath, 0755) 102 os.Chdir(packagePath) 103 104 os.RemoveAll("actions") 105 os.RemoveAll("templates") 106 107 os.Mkdir("actions", 0755) 108 ioutil.WriteFile("actions/app.go", appGo, 0755) 109 r := require.New(t) 110 cmd := cobra.Command{} 111 e := ActionCmd.RunE(&cmd, []string{"posts", "show", "edit"}) 112 r.Nil(e) 113 114 data, _ := ioutil.ReadFile("actions/posts.go") 115 r.Contains(string(data), "package actions") 116 r.Contains(string(data), "github.com/gobuffalo/buffalo") 117 r.Contains(string(data), "func PostsShow(c buffalo.Context) error {") 118 r.Contains(string(data), "func PostsEdit(c buffalo.Context) error {") 119 r.Contains(string(data), `r.HTML("posts/edit.html")`) 120 r.Contains(string(data), `c.Render(200, r.HTML("posts/show.html"))`) 121 122 e = ActionCmd.RunE(&cmd, []string{"posts", "list"}) 123 r.Nil(e) 124 125 data, _ = ioutil.ReadFile("actions/posts.go") 126 r.Contains(string(data), "package actions") 127 r.Contains(string(data), "github.com/gobuffalo/buffalo") 128 r.Contains(string(data), "func PostsShow(c buffalo.Context) error {") 129 r.Contains(string(data), "func PostsEdit(c buffalo.Context) error {") 130 r.Contains(string(data), "func PostsList(c buffalo.Context) error {") 131 r.Contains(string(data), `c.Render(200, r.HTML("posts/list.html"))`) 132 133 data, _ = ioutil.ReadFile("templates/posts/list.html") 134 r.Contains(string(data), "<h1>Posts#List</h1>") 135 136 data, _ = ioutil.ReadFile("actions/posts_test.go") 137 r.Contains(string(data), "package actions_test") 138 r.Contains(string(data), "func (as *ActionSuite) Test_Posts_Show() {") 139 r.Contains(string(data), "func (as *ActionSuite) Test_Posts_Edit() {") 140 r.Contains(string(data), "func (as *ActionSuite) Test_Posts_List() {") 141 } 142 143 var appGo = []byte(` 144 package actions 145 var app *buffalo.App 146 func App() *buffalo.App { 147 if app == nil { 148 app = buffalo.Automatic(buffalo.Options{ 149 Env: "test", 150 }) 151 app.GET("/", func (c buffalo.Context) error { 152 return c.Render(200, r.String("hello")) 153 }) 154 } 155 156 return app 157 } 158 `)