@@ -31,3 +31,39 @@ func TestPrivilegeV1SchemaUpgradeFunc(t *testing.T) {
3131 t .Fatalf ("\n \n expected:\n \n %#v\n \n got:\n \n %#v\n \n " , v1Schema , actual )
3232 }
3333}
34+
35+ func TestExtractEngineVersion (t * testing.T ) {
36+ tests := []struct {
37+ engine string
38+ expected int
39+ expectingError bool
40+ }{
41+ {"postgresql-15" , 15 , false },
42+ {"mysql-8.0" , 8 , false },
43+ {"redis-6" , 6 , false },
44+ {"mariadb-10.5" , 10 , false }, // Only extracts the major version
45+ {"invalid-engine" , 0 , true }, // No version to extract
46+ {"" , 0 , true }, // Empty string case
47+ {"mongodb-3.6" , 3 , false }, // Extracts only the major version
48+ }
49+
50+ for _ , tt := range tests {
51+ t .Run (tt .engine , func (t * testing.T ) {
52+ result , err := rdb .ExtractEngineVersion (tt .engine )
53+
54+ if tt .expectingError {
55+ if err == nil {
56+ t .Errorf ("expected an error for engine %q, but got none" , tt .engine )
57+ }
58+ } else {
59+ if err != nil {
60+ t .Errorf ("did not expect an error for engine %q, but got: %s" , tt .engine , err )
61+ }
62+
63+ if result != tt .expected {
64+ t .Errorf ("expected version %d for engine %q, but got %d" , tt .expected , tt .engine , result )
65+ }
66+ }
67+ })
68+ }
69+ }
0 commit comments