github.com/awslabs/clencli@v0.0.0-20210514234156-7ecf17182a20/tests/cmd_render_test.go (about) 1 package tests 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/awslabs/clencli/cobra/aid" 8 "github.com/awslabs/clencli/cobra/controller" 9 "github.com/sirupsen/logrus" 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestRenderCmd(t *testing.T) { 14 tests := map[string]struct { 15 args []string 16 out string 17 err string 18 }{ 19 // argument 20 "no arg": {args: []string{"render"}, out: "", err: "this command requires one argument"}, 21 "empty arg": {args: []string{"render", ""}, out: "", err: "invalid argument"}, 22 "wrong arg": {args: []string{"render", "foo"}, out: "", err: "invalid argument"}, 23 "unknown flag": {args: []string{"render", "--foo"}, out: "", err: "unknown flag: --foo"}, 24 "missing database": {args: []string{"render", "template"}, out: "", err: "missing database"}, 25 "flag needs an argument name": {args: []string{"render", "template", "--name"}, out: "", err: "flag needs an argument: --name"}, 26 } 27 28 for name, tc := range tests { 29 t.Run(name, func(t *testing.T) { 30 out, err := executeCommand(t, controller.RenderCmd(), tc.args) 31 assert.Contains(t, out, tc.out) 32 assert.Contains(t, err.Error(), tc.err) 33 }) 34 } 35 } 36 37 // /* README */ 38 39 func initProject(t *testing.T, pType string) { 40 aid.DeleteConfigurationsDirectory() 41 args := []string{"init", "project", "--project-name", "foo", "--project-type", pType} 42 wd, out, err := executeCommandGetWorkingDirectory(t, controller.InitCmd(), args) 43 44 assert.Nil(t, err) 45 assert.Contains(t, out, "was successfully initialized") 46 47 sep := string(os.PathSeparator) 48 if err := os.Chdir(wd + sep + t.Name() + sep + "foo"); err != nil { 49 logrus.Fatal("unable to change current working directory") 50 } 51 52 } 53 54 func TestRenderDefault(t *testing.T) { 55 initProject(t, "basic") 56 57 args := []string{"render", "template"} 58 out, err := executeCommandOnly(t, controller.RenderCmd(), args) 59 assert.Nil(t, err) 60 assert.Contains(t, out, "Template readme.tmpl rendered as README.md") 61 } 62 63 func TestRenderReadme(t *testing.T) { 64 initProject(t, "basic") 65 66 args := []string{"render", "template", "--name", "readme"} 67 out, err := executeCommandOnly(t, controller.RenderCmd(), args) 68 assert.Nil(t, err) 69 assert.Contains(t, out, "Template readme.tmpl rendered as README.md") 70 } 71 72 func TestRenderHLD(t *testing.T) { 73 initProject(t, "cloud") 74 75 args := []string{"render", "template", "--name", "hld"} 76 out, err := executeCommandOnly(t, controller.RenderCmd(), args) 77 assert.Nil(t, err) 78 assert.Contains(t, out, "Template hld.tmpl rendered as HLD.md") 79 }