github.com/kshvakov/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 }