From ef03dd296c522f323301d2044af66fe09301356d Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Tue, 23 Jun 2026 19:13:49 -0400 Subject: [PATCH] refactor(sonar): fix javascript:S5906 --- README.md | 1 + tests/character_detail.test.js | 2 +- tests/game_detail.test.js | 32 ++++++++++++++++---------------- tests/item_detail.test.js | 2 +- tests/item_loader.test.js | 14 +++++++------- tests/platform_detail.test.js | 12 ++++++------ 6 files changed, 32 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 4722843db5c2..4f8b530919f4 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ CI Update DB Codecov + SonarCloud --- diff --git a/tests/character_detail.test.js b/tests/character_detail.test.js index 6f3597e39412..27d7d898db0c 100644 --- a/tests/character_detail.test.js +++ b/tests/character_detail.test.js @@ -93,7 +93,7 @@ describe('character_detail.js', () => { test('skips badges when gender and species absent', () => { renderCharacter({ name: 'Robot' }); - expect(document.getElementById('character-badges').children.length).toBe(0); + expect(document.getElementById('character-badges').children).toHaveLength(0); }); test('shows games section when games present', () => { diff --git a/tests/game_detail.test.js b/tests/game_detail.test.js index a68253d5155b..3fd1169d6434 100644 --- a/tests/game_detail.test.js +++ b/tests/game_detail.test.js @@ -107,12 +107,12 @@ describe('game_detail.js', () => { game_modes: [{ name: 'Single player' }], player_perspectives: [{ name: 'First person' }], }); - expect(document.getElementById('game-badges').children.length).toBe(4); + expect(document.getElementById('game-badges').children).toHaveLength(4); }); test('handles missing badge arrays gracefully', () => { renderGameBadges({}); - expect(document.getElementById('game-badges').children.length).toBe(0); + expect(document.getElementById('game-badges').children).toHaveLength(0); }); }); @@ -136,7 +136,7 @@ describe('game_detail.js', () => { test('skips when no ratings', () => { const dl = document.getElementById('game-meta'); renderGameRatings({}, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); test('skips age ratings row when all entries are incomplete', () => { @@ -144,7 +144,7 @@ describe('game_detail.js', () => { renderGameRatings({ age_ratings: [{ rating_category: null, organization: null }], }, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); }); @@ -174,7 +174,7 @@ describe('game_detail.js', () => { test('skips when no platforms', () => { const dl = document.getElementById('game-meta'); renderGamePlatforms({}, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); }); @@ -195,13 +195,13 @@ describe('game_detail.js', () => { test('skips when no release dates', () => { const dl = document.getElementById('game-meta'); renderReleaseDates({}, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); test('skips row when all entries lack date and y', () => { const dl = document.getElementById('game-meta'); renderReleaseDates({ release_dates: [{ date: null, y: null }] }, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); test('renders release date with unknown release_region (empty flag)', () => { @@ -239,13 +239,13 @@ describe('game_detail.js', () => { test('skips when no involved companies', () => { const dl = document.getElementById('game-meta'); renderCompanies({}, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); test('skips rows when devs or pubs list is empty', () => { const dl = document.getElementById('game-meta'); renderCompanies({ involved_companies: [] }, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); }); @@ -302,7 +302,7 @@ describe('game_detail.js', () => { test('skips franchise when neither franchises array nor franchise object', () => { const dl = document.getElementById('game-meta'); renderCollectionsAndFranchises({}, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); }); @@ -318,13 +318,13 @@ describe('game_detail.js', () => { test('skips when no multiplayer modes', () => { const dl = document.getElementById('game-meta'); renderMultiplayer({}, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); test('skips when parts are empty', () => { const dl = document.getElementById('game-meta'); renderMultiplayer({ multiplayer_modes: [{}] }, dl); - expect(dl.children.length).toBe(0); + expect(dl.children).toHaveLength(0); }); }); @@ -339,7 +339,7 @@ describe('game_detail.js', () => { const section = document.getElementById('game-screenshots-section'); expect(section.classList.contains('d-none')).toBe(false); const buttons = document.querySelectorAll('#game-screenshots button'); - expect(buttons.length).toBe(2); + expect(buttons).toHaveLength(2); buttons[0].click(); expect(globalThis.openImageModal).toHaveBeenCalled(); }); @@ -365,7 +365,7 @@ describe('game_detail.js', () => { test('skips video entries without video_id', () => { renderVideos({ videos: [{ name: 'No ID' }] }); - expect(document.querySelectorAll('#game-videos iframe').length).toBe(0); + expect(document.querySelectorAll('#game-videos iframe')).toHaveLength(0); }); test('skips when no videos', () => { @@ -406,7 +406,7 @@ describe('game_detail.js', () => { test('skips entries with no url and no uid', () => { renderExternalLinks({ external_games: [{}] }); - expect(document.getElementById('game-external').children.length).toBe(0); + expect(document.getElementById('game-external').children).toHaveLength(0); }); test('skips when no external_games', () => { @@ -509,7 +509,7 @@ describe('game_detail.js', () => { introHeader.appendChild(existingDesc); // Should not add a second img-desc setupGameBanner({ artworks: [{ url: '//images.igdb.com/t_thumb/art.jpg' }] }); - expect(document.querySelectorAll('.intro-header .img-desc').length).toBe(1); + expect(document.querySelectorAll('.intro-header .img-desc')).toHaveLength(1); }); test('does not throw when artworks present but no .page-heading anywhere', () => { diff --git a/tests/item_detail.test.js b/tests/item_detail.test.js index 392d8f14930c..6fae7bc099ac 100644 --- a/tests/item_detail.test.js +++ b/tests/item_detail.test.js @@ -110,7 +110,7 @@ describe('item_detail.js', () => { test('appends dt and dd with string value', () => { const dl = document.createElement('dl'); addDlRow(dl, 'Developer', 'Test Studio'); - expect(dl.children.length).toBe(2); + expect(dl.children).toHaveLength(2); expect(dl.children[0].tagName).toBe('DT'); expect(dl.children[1].tagName).toBe('DD'); expect(dl.children[0].textContent).toBe('Developer'); diff --git a/tests/item_loader.test.js b/tests/item_loader.test.js index c6c65b8519a5..e38569e1e78b 100644 --- a/tests/item_loader.test.js +++ b/tests/item_loader.test.js @@ -68,7 +68,7 @@ describe('item_loader.js', () => { test('splits at word boundary when longer than 200 chars', () => { const long = 'word '.repeat(50); // 250 chars const result = splitString(long); - expect(result.length).toBe(2); + expect(result).toHaveLength(2); expect(result[0].length).toBeLessThanOrEqual(200); expect(result[1]).toBe(long); }); @@ -137,7 +137,7 @@ describe('item_loader.js', () => { }, allPlatforms); // Should show first 3 platforms + "+1 more" const badges = col.querySelectorAll('.badge'); - expect(badges.length).toBe(4); // 3 platforms + "+1 more" + expect(badges).toHaveLength(4); // 3 platforms + "+1 more" expect(col.textContent).toContain('+1 more'); }); @@ -167,7 +167,7 @@ describe('item_loader.js', () => { row, null, ); - expect(row.children.length).toBe(2); + expect(row.children).toHaveLength(2); }); }); @@ -175,14 +175,14 @@ describe('item_loader.js', () => { test('appends note when total exceeds shown', () => { const container = document.createElement('div'); addMoreResultsNote(container, 100, 60); - expect(container.children.length).toBe(1); + expect(container.children).toHaveLength(1); expect(container.textContent).toContain('60'); }); test('does nothing when total equals shown', () => { const container = document.createElement('div'); addMoreResultsNote(container, 60, 60); - expect(container.children.length).toBe(0); + expect(container.children).toHaveLength(0); }); }); @@ -294,7 +294,7 @@ describe('item_loader.js', () => { const para = document.createElement('p'); const footer = document.createElement('div'); addVersionMetadataToFooter({}, para, footer, {}, regionMap, iconMap); - expect(footer.children.length).toBe(0); + expect(footer.children).toHaveLength(0); }); test('skips metadata key when it has null icon and is not a special key', () => { @@ -304,7 +304,7 @@ describe('item_loader.js', () => { const customIconMap = { media: null, platform_version_release_dates: null, summary: null }; addVersionMetadataToFooter({ media: 'Blu-ray' }, para, footer, {}, regionMap, customIconMap); // Should not add to footer since icon is null and not a special key - expect(footer.children.length).toBe(0); + expect(footer.children).toHaveLength(0); }); }); diff --git a/tests/platform_detail.test.js b/tests/platform_detail.test.js index 9420e4d49f31..644cc194fa40 100644 --- a/tests/platform_detail.test.js +++ b/tests/platform_detail.test.js @@ -92,22 +92,22 @@ describe('platform_detail.js', () => { test('renders category and generation badges', () => { renderPlatformBadges({ category: 1, generation: 9 }); const badges = document.getElementById('platform-badges'); - expect(badges.children.length).toBe(2); + expect(badges.children).toHaveLength(2); }); test('renders only category when no generation', () => { renderPlatformBadges({ category: 2 }); - expect(document.getElementById('platform-badges').children.length).toBe(1); + expect(document.getElementById('platform-badges').children).toHaveLength(1); }); test('renders only generation when no category', () => { renderPlatformBadges({ generation: 8 }); - expect(document.getElementById('platform-badges').children.length).toBe(1); + expect(document.getElementById('platform-badges').children).toHaveLength(1); }); test('renders nothing when no category or generation', () => { renderPlatformBadges({}); - expect(document.getElementById('platform-badges').children.length).toBe(0); + expect(document.getElementById('platform-badges').children).toHaveLength(0); }); test('renders fallback text for unknown category number', () => { @@ -144,7 +144,7 @@ describe('platform_detail.js', () => { test('renders nothing when no data', () => { renderPlatformMetadata({}); - expect(document.getElementById('platform-meta').children.length).toBe(0); + expect(document.getElementById('platform-meta').children).toHaveLength(0); }); }); @@ -248,7 +248,7 @@ describe('platform_detail.js', () => { test('renders nothing extra when version is empty', () => { const body = document.createElement('div'); populateVersionBody(body, {}); - expect(body.children.length).toBe(0); + expect(body.children).toHaveLength(0); }); });