github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/args/flags_test.go (about)

     1  package args_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/taubyte/tau-cli/cli/args"
     8  	"github.com/urfave/cli/v2"
     9  )
    10  
    11  func TestFlags(t *testing.T) {
    12  	testBoolFlag := &cli.BoolFlag{
    13  		Name:    "global",
    14  		Aliases: []string{"g"},
    15  	}
    16  	expectedBoolOptions := []string{"-global", "--global", "-g", "--g"}
    17  
    18  	testStringFlag := &cli.StringFlag{
    19  		Name:    "color",
    20  		Aliases: []string{"c"},
    21  	}
    22  	expectedStringOptions := []string{"-color", "--color", "-c", "--c"}
    23  
    24  	parsed := args.ParseFlag(testBoolFlag)
    25  
    26  	if fmt.Sprintf("%v", parsed.Options) != fmt.Sprintf("%v", expectedBoolOptions) {
    27  		t.Errorf("Expected %v, got %v", expectedBoolOptions, parsed.Options)
    28  	}
    29  
    30  	if parsed.IsBoolFlag != true {
    31  		t.Errorf("Expected %v, got %v", true, parsed.IsBoolFlag)
    32  	}
    33  
    34  	parsed = args.ParseFlag(testStringFlag)
    35  	if fmt.Sprintf("%v", parsed.Options) != fmt.Sprintf("%v", expectedStringOptions) {
    36  		t.Errorf("Expected %v, got %v", expectedStringOptions, parsed.Options)
    37  	}
    38  
    39  	if parsed.IsBoolFlag != false {
    40  		t.Errorf("Expected %v, got %v", false, parsed.IsBoolFlag)
    41  	}
    42  
    43  	testFlags := []cli.Flag{testBoolFlag, testStringFlag}
    44  	parsedFlags := args.ParseFlags(testFlags)
    45  	if len(parsedFlags) != len(testFlags) {
    46  		t.Errorf("Expected %d flags, got %d", len(testFlags), len(parsedFlags))
    47  	}
    48  
    49  	var foundBoolFlag bool
    50  	var foundStringFlag bool
    51  	for _, flag := range parsedFlags {
    52  		if flag.IsBoolFlag {
    53  			foundBoolFlag = true
    54  			if fmt.Sprintf("%v", flag.Options) != fmt.Sprintf("%v", expectedBoolOptions) {
    55  				t.Errorf("Expected %v, got %v", expectedBoolOptions, flag.Options)
    56  			}
    57  		} else {
    58  			foundStringFlag = true
    59  			if fmt.Sprintf("%v", flag.Options) != fmt.Sprintf("%v", expectedStringOptions) {
    60  				t.Errorf("Expected %v, got %v", expectedStringOptions, flag.Options)
    61  			}
    62  		}
    63  	}
    64  
    65  	if !foundBoolFlag {
    66  		t.Errorf("Expected to find a bool flag")
    67  	}
    68  
    69  	if !foundStringFlag {
    70  		t.Errorf("Expected to find a string flag")
    71  	}
    72  }