1package cmd
2
3import (
4	"fmt"
5	"os"
6	"testing"
7)
8
9func TestGoldenAddCmd(t *testing.T) {
10	command := &Command{
11		CmdName:   "test",
12		CmdParent: parentName,
13		Project:   getProject(),
14	}
15	defer os.RemoveAll(command.AbsolutePath)
16
17	command.Project.Create()
18	if err := command.Create(); err != nil {
19		t.Fatal(err)
20	}
21
22	generatedFile := fmt.Sprintf("%s/cmd/%s.go", command.AbsolutePath, command.CmdName)
23	goldenFile := fmt.Sprintf("testdata/%s.go.golden", command.CmdName)
24	err := compareFiles(generatedFile, goldenFile)
25	if err != nil {
26		t.Fatal(err)
27	}
28}
29
30func TestValidateCmdName(t *testing.T) {
31	testCases := []struct {
32		input    string
33		expected string
34	}{
35		{"cmdName", "cmdName"},
36		{"cmd_name", "cmdName"},
37		{"cmd-name", "cmdName"},
38		{"cmd______Name", "cmdName"},
39		{"cmd------Name", "cmdName"},
40		{"cmd______name", "cmdName"},
41		{"cmd------name", "cmdName"},
42		{"cmdName-----", "cmdName"},
43		{"cmdname-", "cmdname"},
44	}
45
46	for _, testCase := range testCases {
47		got := validateCmdName(testCase.input)
48		if testCase.expected != got {
49			t.Errorf("Expected %q, got %q", testCase.expected, got)
50		}
51	}
52}
53