diff --git a/services/modrinth/modrinth-game-versions.service.js b/services/modrinth/modrinth-game-versions.service.js index 634496c330..d278a050d0 100644 --- a/services/modrinth/modrinth-game-versions.service.js +++ b/services/modrinth/modrinth-game-versions.service.js @@ -25,6 +25,12 @@ export default class ModrinthGameVersions extends BaseModrinthService { static defaultBadgeData = { label: 'game versions' } static render({ versions }) { + if (versions.length > 5) { + return { + message: `${versions[0]} | ${versions[1]} | ... | ${versions[versions.length - 2]} | ${versions[versions.length - 1]}`, + color: 'blue', + } + } return { message: versions.join(' | '), color: 'blue', diff --git a/services/modrinth/modrinth-game-versions.spec.js b/services/modrinth/modrinth-game-versions.spec.js new file mode 100644 index 0000000000..bf2b781578 --- /dev/null +++ b/services/modrinth/modrinth-game-versions.spec.js @@ -0,0 +1,22 @@ +import { test, given } from 'sazerac' +import ModrinthGameVersions from './modrinth-game-versions.service.js' + +describe('render function', function () { + it('displays up to five versions', async function () { + test(ModrinthGameVersions.render, () => { + given({ versions: ['1.1', '1.2', '1.3', '1.4', '1.5'] }).expect({ + message: '1.1 | 1.2 | 1.3 | 1.4 | 1.5', + color: 'blue', + }) + }) + }) + + it('uses ellipsis for six versions or more', async function () { + test(ModrinthGameVersions.render, () => { + given({ versions: ['1.1', '1.2', '1.3', '1.4', '1.5', '1.6'] }).expect({ + message: '1.1 | 1.2 | ... | 1.5 | 1.6', + color: 'blue', + }) + }) + }) +}) diff --git a/services/modrinth/modrinth-game-versions.tester.js b/services/modrinth/modrinth-game-versions.tester.js index 0a52d5cb82..4820c8a3b3 100644 --- a/services/modrinth/modrinth-game-versions.tester.js +++ b/services/modrinth/modrinth-game-versions.tester.js @@ -1,3 +1,4 @@ +import Joi from 'joi' import { createServiceTester } from '../tester.js' import { withRegex } from '../test-validators.js' @@ -7,7 +8,12 @@ t.create('Game Versions') .get('/AANobbMI.json') .expectBadge({ label: 'game versions', - message: withRegex(/\d+\.\d+(\.\d+)?( \| )?/), + message: Joi.alternatives().try( + withRegex(/^(\d+\.\d+(\.\d+)?( \| )?)+$/), + withRegex( + /^\d+\.\d+(\.\d+)? \| \d+\.\d+(\.\d+)? \| \.\.\. \| \d+\.\d+(\.\d+)? \| \d+\.\d+(\.\d+)?$/, + ), + ), }) t.create('Game Versions (not found)')