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  `)