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 }