diff --git a/src/core/game/Game.ts b/src/core/game/Game.ts index d82862b21..112083238 100644 --- a/src/core/game/Game.ts +++ b/src/core/game/Game.ts @@ -334,7 +334,7 @@ export class PlayerInfo { if (!name.startsWith("[") || !name.includes("]")) { this.clan = null; } else { - const clanMatch = name.match(/^\[([A-Z]{2,5})\]/); + const clanMatch = name.match(/^\[([a-zA-Z]{2,5})\]/); this.clan = clanMatch ? clanMatch[1] : null; } } diff --git a/tests/PlayerInfo.test.ts b/tests/PlayerInfo.test.ts index 9cb1275e2..2d61676ab 100644 --- a/tests/PlayerInfo.test.ts +++ b/tests/PlayerInfo.test.ts @@ -46,6 +46,28 @@ describe("PlayerInfo", () => { expect(playerInfo.clan).toBe("ABCDE"); }); + test("should extract clan from name when format is [xxxxx]Name", () => { + const playerInfo = new PlayerInfo( + "fr", + "[abcde]PlayerName", + PlayerType.Human, + null, + "player_id", + ); + expect(playerInfo.clan).toBe("abcde"); + }); + + test("should extract clan from name when format is [XxXxX]Name", () => { + const playerInfo = new PlayerInfo( + "fr", + "[AbCdE]PlayerName", + PlayerType.Human, + null, + "player_id", + ); + expect(playerInfo.clan).toBe("AbCdE"); + }); + test("should return null when name doesn't start with [", () => { const playerInfo = new PlayerInfo( "fr", @@ -79,10 +101,10 @@ describe("PlayerInfo", () => { expect(playerInfo.clan).toBeNull(); }); - test("should return null when clan tag contains non-uppercase letters", () => { + test("should return null when clan tag contains non alphanumeric characters", () => { const playerInfo = new PlayerInfo( "fr", - "[Abc]PlayerName", + "[A1c]PlayerName", PlayerType.Human, null, "player_id",