package config import ( "fmt" "os" "strings" "testing" ) func TestGetDefaultConfigDir(t *testing.T) { ud, _ := os.UserHomeDir() desiredPath := fmt.Sprintf("%v/%v", ud, defaultConfigPath) if getDefaultConfigDir() != desiredPath { t.Errorf("Expected to get %v, instead of this got %v", desiredPath, getDefaultConfigDir()) } } func TestParsingDefaultArguments(t *testing.T) { // First item in os.Args is appPath, this have to be mocked fakeOSArgs := []string{"appName", "sync"} parseResult, err := ParseCliArguments("", "", fakeOSArgs) if err != nil { t.Errorf("Unexpected error %v", err.Error()) } if parseResult.ConfigurationFile != getDefaultConfigDir() { t.Errorf("Default value for configurationFile should be %v, instead of this got %v", getDefaultConfigDir(), parseResult.ConfigurationFile) } if parseResult.Sync != true { t.Errorf("Default value for configurationFile should be %v, instead of this got %v", true, parseResult.Sync) } } func TestParsingWithoutCommand(t *testing.T) { // First item in os.Args is appPath, this have to be mocked fakeOSArgs := []string{"appName", "--name", "test"} results, err := ParseCliArguments("", "", fakeOSArgs) if err == nil { t.Errorf("Expected error, not results: %v", results) } if !strings.Contains(err.Error(), "Please follow this help") { t.Errorf("Expected the error contains \"Please follow this help\", but as a result received: \"%v\"", err.Error()) } } func TestParsingNothingProvided(t *testing.T) { // First item in os.Args is appPath, this have to be mocked fakeOSArgs := []string{"appName"} results, err := ParseCliArguments("", "", fakeOSArgs) if err == nil { t.Errorf("Expected error, not results: %v", results) } } func TestParsingNameAndTags(t *testing.T) { // First item in os.Args is appPath, this have to be mocked fakeOSArgs := []string{"appName", "status", "--tag", "example", "--name", "example"} results, err := ParseCliArguments("", "", fakeOSArgs) if err == nil { t.Errorf("Expected error, not results: %v", results) } if err.Error() != errNameAndTagsTogether { t.Errorf("Expected to get \"%v\", instead of this got \"%v\"", errNameAndTagsTogether, err.Error()) } }