github.com/jjfeiler/migrate@v3.5.4+incompatible/util_test.go (about)

     1  package migrate
     2  
     3  import (
     4  	"errors"
     5  	nurl "net/url"
     6  	"testing"
     7  )
     8  
     9  func TestSuintPanicsWithNegativeInput(t *testing.T) {
    10  	defer func() {
    11  		if r := recover(); r == nil {
    12  			t.Fatal("expected suint to panic for -1")
    13  		}
    14  	}()
    15  	suint(-1)
    16  }
    17  
    18  func TestSuint(t *testing.T) {
    19  	if u := suint(0); u != 0 {
    20  		t.Fatalf("expected 0, got %v", u)
    21  	}
    22  }
    23  
    24  func TestFilterCustomQuery(t *testing.T) {
    25  	n, err := nurl.Parse("foo://host?a=b&x-custom=foo&c=d")
    26  	if err != nil {
    27  		t.Fatal(err)
    28  	}
    29  	nx := FilterCustomQuery(n).Query()
    30  	if nx.Get("x-custom") != "" {
    31  		t.Fatalf("didn't expect x-custom")
    32  	}
    33  }
    34  
    35  func TestSourceSchemeFromUrlSuccess(t *testing.T) {
    36  	urlStr := "protocol://path"
    37  	expected := "protocol"
    38  
    39  	u, err := sourceSchemeFromUrl(urlStr)
    40  	if err != nil {
    41  		t.Fatalf("expected no error, but received %q", err)
    42  	}
    43  	if u != expected {
    44  		t.Fatalf("expected %q, but received %q", expected, u)
    45  	}
    46  }
    47  
    48  func TestSourceSchemeFromUrlFailure(t *testing.T) {
    49  	cases := []struct {
    50  		name      string
    51  		urlStr    string
    52  		expectErr error
    53  	}{
    54  		{
    55  			name:      "Empty",
    56  			urlStr:    "",
    57  			expectErr: errors.New("source: URL cannot be empty"),
    58  		},
    59  		{
    60  			name:      "NoScheme",
    61  			urlStr:    "hello",
    62  			expectErr: errors.New("source: no scheme"),
    63  		},
    64  	}
    65  
    66  	for _, tc := range cases {
    67  		t.Run(tc.name, func(t *testing.T) {
    68  			_, err := sourceSchemeFromUrl(tc.urlStr)
    69  			if err.Error() != tc.expectErr.Error() {
    70  				t.Fatalf("expected %q, but received %q", tc.expectErr, err)
    71  			}
    72  		})
    73  	}
    74  }
    75  
    76  func TestDatabaseSchemeFromUrlSuccess(t *testing.T) {
    77  	urlStr := "protocol://path"
    78  	expected := "protocol"
    79  
    80  	u, err := databaseSchemeFromUrl(urlStr)
    81  	if err != nil {
    82  		t.Fatalf("expected no error, but received %q", err)
    83  	}
    84  	if u != expected {
    85  		t.Fatalf("expected %q, but received %q", expected, u)
    86  	}
    87  }
    88  
    89  func TestDatabaseSchemeFromUrlFailure(t *testing.T) {
    90  	cases := []struct {
    91  		name      string
    92  		urlStr    string
    93  		expectErr error
    94  	}{
    95  		{
    96  			name:      "Empty",
    97  			urlStr:    "",
    98  			expectErr: errors.New("database: URL cannot be empty"),
    99  		},
   100  		{
   101  			name:      "NoScheme",
   102  			urlStr:    "hello",
   103  			expectErr: errors.New("database: no scheme"),
   104  		},
   105  	}
   106  
   107  	for _, tc := range cases {
   108  		t.Run(tc.name, func(t *testing.T) {
   109  			_, err := databaseSchemeFromUrl(tc.urlStr)
   110  			if err.Error() != tc.expectErr.Error() {
   111  				t.Fatalf("expected %q, but received %q", tc.expectErr, err)
   112  			}
   113  		})
   114  	}
   115  }