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