diff --git a/src/validation/tibia.go b/src/validation/tibia.go index fd1dbbd9..c3660007 100644 --- a/src/validation/tibia.go +++ b/src/validation/tibia.go @@ -306,6 +306,9 @@ func TownExists(town string) (bool, error) { return false, ErrorValidatorNotInitiated } + // Replace + with spaces in the town name + town = strings.ReplaceAll(town, "+", " ") + // Try to find the town for _, t := range val.Towns { if strings.EqualFold(t, town) { diff --git a/src/validation/tibia_test.go b/src/validation/tibia_test.go new file mode 100644 index 00000000..6892da5b --- /dev/null +++ b/src/validation/tibia_test.go @@ -0,0 +1,103 @@ +package validation + +import "testing" + +func TestTownExists(t *testing.T) { + if !initiated { + err := Initiate("TibiaData-API-Testing") + if err != nil { + t.Fatal(err) + } + } + + tests := []struct { + name string + town string + want bool + wantErr bool + }{ + { + name: "empty", + town: "", + want: false, + wantErr: false, + }, { + name: "unknown", + town: "anything", + want: false, + wantErr: false, + }, { + name: "carlin lower case", + town: "carlin", + want: true, + wantErr: false, + }, { + name: "carlin upper case", + town: "CARLIN", + want: true, + wantErr: false, + }, { + name: "carlin mixed case", + town: "CaRlIn", + want: true, + wantErr: false, + }, { + name: "ab'dendriel lower case", + town: "ab'dendriel", + want: true, + wantErr: false, + }, { + name: "ab'dendriel upper case", + town: "AB'DENDRIEL", + want: true, + wantErr: false, + }, { + name: "ab'dendriel mixed case", + town: "Ab'DeNdRiEl", + want: true, + wantErr: false, + }, { + name: "port hope lower case", + town: "port hope", + want: true, + wantErr: false, + }, { + name: "port hope upper case", + town: "PORT HOPE", + want: true, + wantErr: false, + }, { + name: "port hope mixed case", + town: "PoRt HoPe", + want: true, + wantErr: false, + }, { + name: "port hope lower case with '+'", + town: "port+hope", + want: true, + wantErr: false, + }, { + name: "port hope upper case with '+'", + town: "PORT+HOPE", + want: true, + wantErr: false, + }, { + name: "port hope mixed case with '+'", + town: "PoRt+HoPe", + want: true, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := TownExists(tt.town) + if (err != nil) != tt.wantErr { + t.Errorf("TownExists() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("TownExists() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/src/webserver.go b/src/webserver.go index 8f20bb8a..139017bf 100644 --- a/src/webserver.go +++ b/src/webserver.go @@ -655,7 +655,7 @@ func tibiaHousesOverview(c *gin.Context) { // Adding fix for First letter to be upper and rest lower world = TibiaDataStringWorldFormatToTitle(world) - town = TibiaDataStringWorldFormatToTitle(town) + town = strings.ReplaceAll(TibiaDataStringWorldFormatToTitle(town), "+", " ") // Check if world exists exists, err := validation.WorldExists(world)