Add hyphen to valid rsn regex.

This commit is contained in:
maxswa
2021-05-01 14:09:08 -04:00
parent 163f4dd184
commit a4065022d6
2 changed files with 59 additions and 38 deletions

View File

@@ -4,7 +4,7 @@ import {
getStats, getStats,
getStatsByGamemode, getStatsByGamemode,
getRSNFormat, getRSNFormat,
Stats, Stats
} from '../src/index'; } from '../src/index';
test('Parse CSV to json', () => { test('Parse CSV to json', () => {
@@ -115,12 +115,12 @@ test('Parse CSV to json', () => {
farming: { rank: 821, level: 99, xp: 62123353 }, farming: { rank: 821, level: 99, xp: 62123353 },
runecraft: { rank: 169, level: 99, xp: 43127930 }, runecraft: { rank: 169, level: 99, xp: 43127930 },
hunter: { rank: 810, level: 99, xp: 37688883 }, hunter: { rank: 810, level: 99, xp: 37688883 },
construction: { rank: 92, level: 99, xp: 32005622 }, construction: { rank: 92, level: 99, xp: 32005622 }
}, },
leaguePoints: { rank: 23423, score: 478 }, leaguePoints: { rank: 23423, score: 478 },
bountyHunter: { bountyHunter: {
hunter: { rank: 99831, score: 23 }, hunter: { rank: 99831, score: 23 },
rogue: { rank: 89912, score: 37 }, rogue: { rank: 89912, score: 37 }
}, },
lastManStanding: { rank: 4814, score: 898 }, lastManStanding: { rank: 4814, score: 898 },
soulWarsZeal: { rank: 37, score: 225 }, soulWarsZeal: { rank: 37, score: 225 },
@@ -131,7 +131,7 @@ test('Parse CSV to json', () => {
medium: { rank: 127, score: 4259 }, medium: { rank: 127, score: 4259 },
hard: { rank: 361, score: 915 }, hard: { rank: 361, score: 915 },
elite: { rank: 392, score: 250 }, elite: { rank: 392, score: 250 },
master: { rank: 1, score: 6143 }, master: { rank: 1, score: 6143 }
}, },
bosses: { bosses: {
abyssalSire: { rank: 382, score: 2780 }, abyssalSire: { rank: 382, score: 2780 },
@@ -178,17 +178,38 @@ test('Parse CSV to json', () => {
vorkath: { rank: 8623, score: 1340 }, vorkath: { rank: 8623, score: 1340 },
wintertodt: { rank: 605, score: 1694 }, wintertodt: { rank: 605, score: 1694 },
zalcano: { rank: -1, score: -1 }, zalcano: { rank: -1, score: -1 },
zulrah: { rank: 3867, score: 4583 }, zulrah: { rank: 3867, score: 4583 }
}, }
}; };
expect(parseStats(csv)).toStrictEqual(expectedOutput); expect(parseStats(csv)).toStrictEqual(expectedOutput);
}); });
test('Get name format', async () => { describe('Get name format', () => {
jest.setTimeout(30000); it('gets a name with a space', async () => {
const data = await getRSNFormat('lYnX tiTaN'); jest.setTimeout(30000);
expect(data).toBe('Lynx Titan'); const data = await getRSNFormat('lYnX tiTaN');
expect(data).toBe('Lynx Titan');
});
it('gets a name with an underscore', async () => {
jest.setTimeout(30000);
const data = await getRSNFormat('lYnX_tiTaN');
expect(data).toBe('Lynx Titan');
});
it('gets a name with a hyphen', async () => {
jest.setTimeout(30000);
const data = await getRSNFormat('lYnX-tiTaN');
expect(data).toBe('Lynx Titan');
});
it('gets a name with a number', async () => {
jest.setTimeout(30000);
const data = await getRSNFormat('B0ATY');
expect(data).toBe('B0aty');
});
it('throws an error for a name with invalid characters', async () => {
jest.setTimeout(30000);
await expect(getRSNFormat('b&aty')).rejects.toBeTruthy();
});
}); });
test('Get attack top page', async () => { test('Get attack top page', async () => {
@@ -200,14 +221,14 @@ test('Get attack top page', async () => {
rank: 1, rank: 1,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 2, rank: 2,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ name: 'Drakon', rank: 3, level: 99, xp: 200000000, dead: false }, { name: 'Drakon', rank: 3, level: 99, xp: 200000000, dead: false },
{ {
@@ -215,161 +236,161 @@ test('Get attack top page', async () => {
rank: 4, rank: 4,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 5, rank: 5,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 6, rank: 6,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 7, rank: 7,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 8, rank: 8,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 9, rank: 9,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 10, rank: 10,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 11, rank: 11,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 12, rank: 12,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 13, rank: 13,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 14, rank: 14,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 15, rank: 15,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 16, rank: 16,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 17, rank: 17,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 18, rank: 18,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 19, rank: 19,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 20, rank: 20,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 21, rank: 21,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 22, rank: 22,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 23, rank: 23,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 24, rank: 24,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, },
{ {
name: expect.any(String), name: expect.any(String),
rank: 25, rank: 25,
level: 99, level: 99,
xp: 200000000, xp: 200000000,
dead: false, dead: false
}, }
]); ]);
}); });
test('Get non-existant player', async () => { test('Get non-existant player', async () => {
jest.setTimeout(30000); jest.setTimeout(30000);
getStats('fishy').catch(err => { getStats('fishy').catch((err) => {
if (err.response) { if (err.response) {
expect(err.response.status).toBe(404); expect(err.response.status).toBe(404);
} }
@@ -403,6 +424,6 @@ test('Get stats by gamemode', async () => {
farming: { rank: expect.any(Number), level: 99, xp: 200000000 }, farming: { rank: expect.any(Number), level: 99, xp: 200000000 },
runecraft: { rank: expect.any(Number), level: 99, xp: 200000000 }, runecraft: { rank: expect.any(Number), level: 99, xp: 200000000 },
hunter: { rank: expect.any(Number), level: 99, xp: 200000000 }, hunter: { rank: expect.any(Number), level: 99, xp: 200000000 },
construction: { rank: expect.any(Number), level: 99, xp: 200000000 }, construction: { rank: expect.any(Number), level: 99, xp: 200000000 }
}); });
}); });

View File

@@ -39,7 +39,7 @@ import {
export async function getRSNFormat(rsn: string): Promise<string> { export async function getRSNFormat(rsn: string): Promise<string> {
if (typeof rsn !== 'string') { if (typeof rsn !== 'string') {
throw Error('RSN must be a string'); throw Error('RSN must be a string');
} else if (!/^[a-zA-Z0-9 _]+$/.test(rsn)) { } else if (!/^[a-zA-Z0-9 _-]+$/.test(rsn)) {
throw Error('RSN contains invalid character'); throw Error('RSN contains invalid character');
} else if (rsn.length > 12 || rsn.length < 1) { } else if (rsn.length > 12 || rsn.length < 1) {
throw Error('RSN must be between 1 and 12 characters'); throw Error('RSN must be between 1 and 12 characters');