github.com/diamondburned/arikawa/v2@v2.1.0/bot/error_test.go (about)

     1  package bot
     2  
     3  import (
     4  	"errors"
     5  	"strings"
     6  	"testing"
     7  )
     8  
     9  func TestInvalidUsage(t *testing.T) {
    10  	t.Run("fmt", func(t *testing.T) {
    11  		err := ErrInvalidUsage{
    12  			Prefix: "!",
    13  			Args:   []string{"hime", "arikawa"},
    14  			Index:  1,
    15  			Wrap:   errors.New("test error"),
    16  		}
    17  		str := err.Error()
    18  
    19  		if !strings.Contains(str, "test error") {
    20  			t.Fatal("does not contain 'test error':", str)
    21  		}
    22  
    23  		if !strings.Contains(str, "__arikawa__") {
    24  			t.Fatal("Unexpected highlight index:", str)
    25  		}
    26  	})
    27  
    28  	t.Run("missing arguments", func(t *testing.T) {
    29  		err := ErrInvalidUsage{}
    30  		str := err.Error()
    31  
    32  		if str != "missing arguments. Refer to help." {
    33  			t.Fatal("Unexpected error:", str)
    34  		}
    35  	})
    36  
    37  	t.Run("no index", func(t *testing.T) {
    38  		err := ErrInvalidUsage{Wrap: errors.New("astolfo")}
    39  		str := err.Error()
    40  
    41  		if str != "invalid usage, error: astolfo." {
    42  			t.Fatal("Unexpected error:", str)
    43  		}
    44  	})
    45  
    46  	t.Run("unwrap", func(t *testing.T) {
    47  		var err = errors.New("hackadoll no. 3")
    48  		var wrap = &ErrInvalidUsage{
    49  			Wrap: err,
    50  		}
    51  
    52  		if !errors.Is(wrap, err) {
    53  			t.Fatal("Failed to unwrap, errors mismatch.")
    54  		}
    55  	})
    56  }