diff --git a/packages/website/lib/__tests__/statsUtils.test.js b/packages/website/lib/__tests__/statsUtils.test.js index b3e4c372f8..e7fe651977 100644 --- a/packages/website/lib/__tests__/statsUtils.test.js +++ b/packages/website/lib/__tests__/statsUtils.test.js @@ -26,4 +26,21 @@ describe('Stats Utils unit tests', () => { expect(stats.growthRate).toBe('4.87') expect(stats.totalUploads).toBe(43352125) }) + + it('Should return 0 if totalBefore is 0 (dividing by zero)', () => { + const infinityData = { + data: { + uploads_past_7_total: 0, + uploads_nft_total: 0, + uploads_remote_total: 0, + uploads_car_total: 0, + uploads_multipart_total: 0, + uploads_blob_total: 0, + }, + } + const stats = decorateAdditionalCalculatedValues(infinityData.data) + + // passing in 0/0 should return 0, not infinity + expect(stats.growthRate).toBe(0) + }) }) diff --git a/packages/website/lib/statsUtils.js b/packages/website/lib/statsUtils.js index 6bafa2cedd..ff6f47b8f2 100644 --- a/packages/website/lib/statsUtils.js +++ b/packages/website/lib/statsUtils.js @@ -37,8 +37,8 @@ function uploadsTotal(statsObject) { }, 0) const totalBefore = total - statsObject.uploads_past_7_total - const uploadsGrowthRate = calcuateGrowthRate(total, totalBefore) - + const uploadsGrowthRate = + totalBefore > 0 ? calcuateGrowthRate(total, totalBefore) : 0 return { ...statsObject, totalUploads: total, growthRate: uploadsGrowthRate } } diff --git a/packages/website/pages/stats.js b/packages/website/pages/stats.js index 44ae671a34..f2395b1201 100644 --- a/packages/website/pages/stats.js +++ b/packages/website/pages/stats.js @@ -60,7 +60,7 @@ export default function Stats({ logos }) { 'Content-Type': 'application/json', }, }).then((res) => res.json()) - setStats(decorateAdditionalCalculatedValues(stats)) + setStats(decorateAdditionalCalculatedValues(stats.data)) } catch (e) { const fakeData = { ok: true,