Skip to content

Commit cfecd59

Browse files
fix validation error by replacing '+' with ' ' in TownExists (#295)
Co-authored-by: Tobias Lindberg <tobias.ehlert@gmail.com>
1 parent 3922667 commit cfecd59

File tree

3 files changed

+107
-1
lines changed

3 files changed

+107
-1
lines changed

src/validation/tibia.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,9 @@ func TownExists(town string) (bool, error) {
306306
return false, ErrorValidatorNotInitiated
307307
}
308308

309+
// Replace + with spaces in the town name
310+
town = strings.ReplaceAll(town, "+", " ")
311+
309312
// Try to find the town
310313
for _, t := range val.Towns {
311314
if strings.EqualFold(t, town) {

src/validation/tibia_test.go

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package validation
2+
3+
import "testing"
4+
5+
func TestTownExists(t *testing.T) {
6+
if !initiated {
7+
err := Initiate("TibiaData-API-Testing")
8+
if err != nil {
9+
t.Fatal(err)
10+
}
11+
}
12+
13+
tests := []struct {
14+
name string
15+
town string
16+
want bool
17+
wantErr bool
18+
}{
19+
{
20+
name: "empty",
21+
town: "",
22+
want: false,
23+
wantErr: false,
24+
}, {
25+
name: "unknown",
26+
town: "anything",
27+
want: false,
28+
wantErr: false,
29+
}, {
30+
name: "carlin lower case",
31+
town: "carlin",
32+
want: true,
33+
wantErr: false,
34+
}, {
35+
name: "carlin upper case",
36+
town: "CARLIN",
37+
want: true,
38+
wantErr: false,
39+
}, {
40+
name: "carlin mixed case",
41+
town: "CaRlIn",
42+
want: true,
43+
wantErr: false,
44+
}, {
45+
name: "ab'dendriel lower case",
46+
town: "ab'dendriel",
47+
want: true,
48+
wantErr: false,
49+
}, {
50+
name: "ab'dendriel upper case",
51+
town: "AB'DENDRIEL",
52+
want: true,
53+
wantErr: false,
54+
}, {
55+
name: "ab'dendriel mixed case",
56+
town: "Ab'DeNdRiEl",
57+
want: true,
58+
wantErr: false,
59+
}, {
60+
name: "port hope lower case",
61+
town: "port hope",
62+
want: true,
63+
wantErr: false,
64+
}, {
65+
name: "port hope upper case",
66+
town: "PORT HOPE",
67+
want: true,
68+
wantErr: false,
69+
}, {
70+
name: "port hope mixed case",
71+
town: "PoRt HoPe",
72+
want: true,
73+
wantErr: false,
74+
}, {
75+
name: "port hope lower case with '+'",
76+
town: "port+hope",
77+
want: true,
78+
wantErr: false,
79+
}, {
80+
name: "port hope upper case with '+'",
81+
town: "PORT+HOPE",
82+
want: true,
83+
wantErr: false,
84+
}, {
85+
name: "port hope mixed case with '+'",
86+
town: "PoRt+HoPe",
87+
want: true,
88+
wantErr: false,
89+
},
90+
}
91+
for _, tt := range tests {
92+
t.Run(tt.name, func(t *testing.T) {
93+
got, err := TownExists(tt.town)
94+
if (err != nil) != tt.wantErr {
95+
t.Errorf("TownExists() error = %v, wantErr %v", err, tt.wantErr)
96+
return
97+
}
98+
if got != tt.want {
99+
t.Errorf("TownExists() = %v, want %v", got, tt.want)
100+
}
101+
})
102+
}
103+
}

src/webserver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ func tibiaHousesOverview(c *gin.Context) {
655655

656656
// Adding fix for First letter to be upper and rest lower
657657
world = TibiaDataStringWorldFormatToTitle(world)
658-
town = TibiaDataStringWorldFormatToTitle(town)
658+
town = strings.ReplaceAll(TibiaDataStringWorldFormatToTitle(town), "+", " ")
659659

660660
// Check if world exists
661661
exists, err := validation.WorldExists(world)

0 commit comments

Comments
 (0)