github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/genny/newapp/api/api_test.go (about)

     1  package api
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/JarrahG/buffalocli/internal/genny/newapp/core"
     8  	"github.com/gobuffalo/envy"
     9  	"github.com/gobuffalo/genny/v2/gentest"
    10  	"github.com/gobuffalo/meta"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func init() {
    15  	// normalize command output
    16  	envy.Set("GO_BIN", "go")
    17  }
    18  
    19  func Test_New(t *testing.T) {
    20  	r := require.New(t)
    21  
    22  	app := meta.Named("api", ".")
    23  	app.PackageRoot("api")
    24  	app.AsAPI = true
    25  	app.AsWeb = false
    26  
    27  	gg, err := New(&Options{
    28  		Options: &core.Options{
    29  			App: app,
    30  		},
    31  	})
    32  	r.NoError(err)
    33  
    34  	run := gentest.NewRunner()
    35  	run.WithGroup(gg)
    36  	r.NoError(run.Run())
    37  
    38  	res := run.Results()
    39  	cmds := []string{
    40  		"go mod init api",
    41  	}
    42  	r.Len(res.Commands, len(cmds))
    43  
    44  	for i, c := range res.Commands {
    45  		r.Equal(cmds[i], strings.Join(c.Args, " "))
    46  	}
    47  
    48  	expected := commonExpected
    49  	for _, e := range expected {
    50  		_, err = res.Find(e)
    51  		r.NoError(err)
    52  	}
    53  
    54  	f, err := res.Find("actions/render.go")
    55  	r.NoError(err)
    56  	r.Contains(f.String(), `DefaultContentType: "application/json",`)
    57  
    58  	f, err = res.Find("actions/home.go")
    59  	r.NoError(err)
    60  	r.Contains(f.String(), `return c.Render(http.StatusOK, r.JSON(map[string]string{"message": "Welcome to Buffalo!"}))`)
    61  
    62  	f, err = res.Find("actions/app.go")
    63  	r.NoError(err)
    64  	r.Contains(f.String(), `app = buffalo.New(buffalo.Options`)
    65  	r.Regexp(`T.*\*i18n\.Translator`, f.String())
    66  	r.Contains(f.String(), `func translations() buffalo.MiddlewareFunc {`)
    67  
    68  	f, err = res.Find("locales/all.en-us.yaml")
    69  	r.NoError(err)
    70  	r.Contains(f.String(), `translation: "Welcome to Buffalo (EN)"`)
    71  
    72  	unexpected := []string{
    73  		"Dockerfile",
    74  		"database.yml",
    75  		"models/models.go",
    76  		"go.mod",
    77  		".buffalo.dev.yml",
    78  		"assets/css/application.scss.css",
    79  		"public/assets/application.js",
    80  	}
    81  
    82  	for _, u := range unexpected {
    83  		_, err = res.Find(u)
    84  		r.Error(err)
    85  	}
    86  }
    87  
    88  var commonExpected = []string{
    89  	"actions/actions_test.go",
    90  	"actions/app.go",
    91  	"actions/home.go",
    92  	"actions/home_test.go",
    93  	"actions/render.go",
    94  	"fixtures/sample.toml",
    95  	"grifts/init.go",
    96  	"locales/embed.go",
    97  	".codeclimate.yml",
    98  	".env",
    99  	"inflections.json",
   100  	"cmd/app/main.go",
   101  	"README.md",
   102  }