github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/genny/build/assets_test.go (about) 1 package build 2 3 import ( 4 "archive/zip" 5 "io" 6 "os" 7 "strings" 8 "testing" 9 10 "github.com/JarrahG/buffalocli/internal/genny/assets/webpack" 11 "github.com/JarrahG/buffalocli/internal/genny/newapp/core" 12 "github.com/JarrahG/buffalocli/internal/genny/newapp/web" 13 "github.com/JarrahG/buffalocli/internal/genny/testrunner" 14 "github.com/gobuffalo/envy" 15 "github.com/gobuffalo/meta" 16 "github.com/stretchr/testify/require" 17 ) 18 19 func Test_assets(t *testing.T) { 20 r := require.New(t) 21 22 run, err := testrunner.WebApp(&web.Options{}) 23 r.NoError(err) 24 25 opts := &Options{ 26 WithAssets: true, 27 } 28 r.NoError(opts.Validate()) 29 opts.App.WithNodeJs = true 30 opts.App.PackageJSON.Scripts = map[string]string{ 31 "build": "webpack -p --progress", 32 } 33 r.NoError(run.WithNew(assets(opts))) 34 35 r.NoError(envy.MustSet("NODE_ENV", "")) 36 ne := envy.Get("NODE_ENV", "") 37 r.Empty(ne) 38 r.NoError(run.Run()) 39 40 ne = envy.Get("NODE_ENV", "") 41 r.NotEmpty(ne) 42 r.Equal(opts.Environment, ne) 43 44 res := run.Results() 45 46 cmds := []string{"npm run build"} 47 r.Len(res.Commands, len(cmds)) 48 for i, c := range res.Commands { 49 r.Equal(cmds[i], strings.Join(c.Args, " ")) 50 } 51 } 52 53 func Test_assets_Archived(t *testing.T) { 54 r := require.New(t) 55 56 app := meta.New(".") 57 app.Root = "." 58 webOpts := &web.Options{ 59 Options: &core.Options{}, 60 Webpack: &webpack.Options{}, 61 } 62 webOpts.App = app 63 run, err := testrunner.WebApp(webOpts) 64 r.NoError(err) 65 66 opts := &Options{ 67 WithAssets: true, 68 ExtractAssets: true, 69 } 70 71 opts.App = app 72 r.NoError(opts.Validate()) 73 r.NoError(run.WithNew(assets(opts))) 74 r.NoError(run.Run()) 75 76 res := run.Results() 77 78 cmds := []string{} 79 r.Len(res.Commands, len(cmds)) 80 for i, c := range res.Commands { 81 r.Equal(cmds[i], strings.Join(c.Args, " ")) 82 } 83 84 f, err := res.Find("actions/app.go") 85 r.NoError(err) 86 r.Contains(f.String(), `// app.ServeFiles("/"`) 87 88 f, err = res.Find("bin/assets.zip") 89 r.NoError(err) 90 91 tmp, err := os.CreateTemp("", "assets-*.zip") 92 r.NoError(err) 93 t.Cleanup(func() { 94 os.Remove(tmp.Name()) 95 }) 96 97 _, err = io.Copy(tmp, f) 98 r.NoError(err) 99 r.NoError(tmp.Close()) 100 101 archive, err := zip.OpenReader(tmp.Name()) 102 r.NoError(err) 103 104 r.Equal(1, len(archive.File)) 105 for _, e := range []string{"keep"} { 106 _, err = archive.Open(e) 107 r.NoError(err) 108 } 109 }