github.com/rainforestapp/rainforest-cli@v2.12.0+incompatible/resources_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "os" 6 "regexp" 7 "testing" 8 9 "github.com/rainforestapp/rainforest-cli/rainforest" 10 ) 11 12 func regexMatchOut(pattern string, t *testing.T) { 13 matched, err := regexp.Match(pattern, tablesOut.(*bytes.Buffer).Bytes()) 14 if err != nil { 15 t.Error("Error with pattern match:", err) 16 } 17 if !matched { 18 t.Errorf("Printed out %v, want %v", tablesOut, pattern) 19 } 20 } 21 22 func TestPrintResourceTable(t *testing.T) { 23 tablesOut = &bytes.Buffer{} 24 defer func() { 25 tablesOut = os.Stdout 26 }() 27 28 testBody := [][]string{{"1337", "Dyer"}, {"42", "Situation"}} 29 printResourceTable([]string{"Column 1", "Column 2"}, testBody) 30 regexMatchOut(`\| +COLUMN 1 +\| +COLUMN 2 +\|`, t) 31 regexMatchOut(`\| +1337 +\| +Dyer +\|`, t) 32 } 33 34 type testResourceAPI struct { 35 Folders []rainforest.Folder 36 Browsers []rainforest.Browser 37 Sites []rainforest.Site 38 Environments []rainforest.Environment 39 Features []rainforest.Feature 40 RunGroups []rainforest.RunGroup 41 } 42 43 func (api testResourceAPI) GetFolders() ([]rainforest.Folder, error) { 44 return api.Folders, nil 45 } 46 47 func (api testResourceAPI) GetBrowsers() ([]rainforest.Browser, error) { 48 return api.Browsers, nil 49 } 50 51 func (api testResourceAPI) GetSites() ([]rainforest.Site, error) { 52 return api.Sites, nil 53 } 54 55 func (api testResourceAPI) GetEnvironments() ([]rainforest.Environment, error) { 56 return api.Environments, nil 57 } 58 59 func (api testResourceAPI) GetFeatures() ([]rainforest.Feature, error) { 60 return api.Features, nil 61 } 62 63 func (api testResourceAPI) GetRunGroups() ([]rainforest.RunGroup, error) { 64 return api.RunGroups, nil 65 } 66 67 func TestPrintFolders(t *testing.T) { 68 tablesOut = &bytes.Buffer{} 69 defer func() { 70 tablesOut = os.Stdout 71 }() 72 73 testAPI := testResourceAPI{ 74 Folders: []rainforest.Folder{ 75 {ID: 123, Title: "First Folder Title"}, 76 {ID: 456, Title: "Second Folder Title"}, 77 }, 78 } 79 80 printFolders(testAPI) 81 regexMatchOut(`\| +FOLDER ID +\| +FOLDER NAME +\|`, t) 82 regexMatchOut(`\| +123 +\| +First Folder Title +\|`, t) 83 regexMatchOut(`\| +456 +\| +Second Folder Title +\|`, t) 84 } 85 86 func TestPrintBrowsers(t *testing.T) { 87 tablesOut = &bytes.Buffer{} 88 defer func() { 89 tablesOut = os.Stdout 90 }() 91 92 testAPI := testResourceAPI{ 93 Browsers: []rainforest.Browser{ 94 {Name: "chrome", Description: "Google Chrome"}, 95 {Name: "firefox", Description: "Mozilla Firefox"}, 96 }, 97 } 98 99 printBrowsers(testAPI) 100 regexMatchOut(`\| +BROWSER ID +\| +BROWSER NAME +\|`, t) 101 regexMatchOut(`\| +chrome +\| +Google Chrome +\|`, t) 102 regexMatchOut(`\| +firefox +\| +Mozilla Firefox +\|`, t) 103 } 104 105 func TestPrintSites(t *testing.T) { 106 tablesOut = &bytes.Buffer{} 107 defer func() { 108 tablesOut = os.Stdout 109 }() 110 111 testAPI := testResourceAPI{ 112 Sites: []rainforest.Site{ 113 {ID: 123, Name: "My favorite site", Category: "site"}, 114 {ID: 456, Name: "My favorite app URL", Category: "ios"}, 115 {ID: 789, Name: "Site with unknown platform", Category: "unknown_platform"}, 116 }, 117 } 118 119 printSites(testAPI) 120 regexMatchOut(`\| +SITE ID +\| +SITE NAME +\| +CATEGORY +\|`, t) 121 regexMatchOut(`\| +123 +\| +My favorite site +\| +Site +\|`, t) 122 regexMatchOut(`\| +456 +\| +My favorite app URL +\| +iOS +\|`, t) 123 regexMatchOut(`\| +789 +\| +Site with unknown platform +\| +unknown_platform +\|`, t) 124 } 125 126 func TestPrintEnvironments(t *testing.T) { 127 tablesOut = &bytes.Buffer{} 128 defer func() { 129 tablesOut = os.Stdout 130 }() 131 132 testAPI := testResourceAPI{ 133 Environments: []rainforest.Environment{ 134 {ID: 123, Name: "QA"}, 135 {ID: 456, Name: "Staging 1"}, 136 {ID: 789, Name: "Staging 2"}, 137 }, 138 } 139 140 printEnvironments(testAPI) 141 regexMatchOut(`\| +ENVIRONMENT ID +\| +ENVIRONMENT NAME +\|`, t) 142 regexMatchOut(`\| +123 +\| +QA +\|`, t) 143 regexMatchOut(`\| +456 +\| +Staging 1 +\|`, t) 144 regexMatchOut(`\| +789 +\| +Staging 2 +\|`, t) 145 } 146 147 func TestPrintFeatures(t *testing.T) { 148 tablesOut = &bytes.Buffer{} 149 defer func() { 150 tablesOut = os.Stdout 151 }() 152 153 testAPI := testResourceAPI{ 154 Features: []rainforest.Feature{ 155 {ID: 123, Title: "My favorite feature"}, 156 {ID: 456, Title: "My least favorite feature"}, 157 {ID: 789, Title: "An OK feature"}, 158 }, 159 } 160 161 printFeatures(testAPI) 162 regexMatchOut(`\| +FEATURE ID +\| +FEATURE TITLE +\|`, t) 163 regexMatchOut(`\| +123 +\| +My favorite feature +\|`, t) 164 regexMatchOut(`\| +456 +\| +My least favorite feature +\|`, t) 165 regexMatchOut(`\| +789 +\| +An OK feature +\|`, t) 166 } 167 168 func TestPrintRunGroups(t *testing.T) { 169 tablesOut = &bytes.Buffer{} 170 defer func() { 171 tablesOut = os.Stdout 172 }() 173 174 testAPI := testResourceAPI{ 175 RunGroups: []rainforest.RunGroup{ 176 {ID: 123, Title: "My favorite run group"}, 177 {ID: 456, Title: "My least favorite run group"}, 178 {ID: 789, Title: "An OK run group"}, 179 }, 180 } 181 182 printRunGroups(testAPI) 183 regexMatchOut(`\| +RUN GROUP ID +\| +RUN GROUP TITLE +\|`, t) 184 regexMatchOut(`\| +123 +\| +My favorite run group +\|`, t) 185 regexMatchOut(`\| +456 +\| +My least favorite run group +\|`, t) 186 regexMatchOut(`\| +789 +\| +An OK run group +\|`, t) 187 }