Repository: anuraghazra/github-readme-stats
Pull request #2857 (2023-06-19 04:42:49)

Ranks: Take into account user reviewed PRs count
Related to #2846

TODOS:

- [ ] Discuss reviews median and weight values
- [x] Fix e2e test
- [x] ? update docs

vercel[bot]: [vc]: #l+DlzUod7eofI7zht0C1/LmtAVjkG/pCSugX0SGD6R0=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJnaXRodWItcmVhZG1lLXN0YXRzIiwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL2dpdGh1Yi1yZWFkbWUtc3RhdHMtdGVhbS9naXRodWItcmVhZG1lLXN0YXRzLzhKUzFtR3hRY1l3dEVNcXhKdjRmVkc1WXl1aHAiLCJwcmV2aWV3VXJsIjoiZ2l0aHViLXJlYWRtZS1zdGF0cy1naXQtcmFua2NhbC0zMDk5OTEtZ2l0aHViLXJlYWRtZS1zdGF0cy10ZWFtLnZlcmNlbC5hcHAiLCJuZXh0Q29tbWl0U3RhdHVzIjoiREVQTE9ZRUQifV19
**The latest updates on your projects**. Learn more about [Vercel for Git ↗︎](https://vercel.link/github-learn-more)

| Name | Status | Preview | Updated (UTC) |
| :--- | :----- | :------ | :------ |
| **github-readme-stats** | ✅ Ready ([Inspect](https://vercel.com/github-readme-stats-team/github-readme-stats/8JS1mGxQcYwtEMqxJv4fVG5Yyuhp)) | [Visit Preview](https://github-readme-stats-git-rankcal-309991-github-readme-stats-team.vercel.app) | Jun 19, 2023 4:42am |


codecov[bot]: ## [Codecov](https://app.codecov.io/gh/anuraghazra/github-readme-stats/pull/2857?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Anurag+Hazra) Report
Patch coverage: **`100.00`**% and no project coverage change.
> Comparison is base [(`92518e3`)](https://app.codecov.io/gh/anuraghazra/github-readme-stats/commit/92518e375f99bf83b3e0113805ce80dae1f2fb72?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Anurag+Hazra) 97.71% compared to head [(`03d149f`)](https://app.codecov.io/gh/anuraghazra/github-readme-stats/pull/2857?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Anurag+Hazra) 97.71%.

<details><summary>Additional details and impacted files</summary>


```diff
@@           Coverage Diff           @@
##           master    #2857   +/-   ##
=======================================
  Coverage   97.71%   97.71%           
=======================================
  Files          24       24           
  Lines        5076     5082    +6     
  Branches      451      451           
=======================================
+ Hits         4960     4966    +6     
  Misses        115      115           
  Partials        1        1           
```


| [Impacted Files](https://app.codecov.io/gh/anuraghazra/github-readme-stats/pull/2857?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Anurag+Hazra) | Coverage Δ | |
|---|---|---|
| [src/calculateRank.js](https://app.codecov.io/gh/anuraghazra/github-readme-stats/pull/2857?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Anurag+Hazra#diff-c3JjL2NhbGN1bGF0ZVJhbmsuanM=) | `100.00% <100.00%> (ø)` | |


</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/anuraghazra/github-readme-stats/pull/2857?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Anurag+Hazra).   
:loudspeaker: Do you have feedback about the report comment? [Let us know in this issue](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Anurag+Hazra).


Patch:
diff --git a/.github/workflows/deploy-prep.yml b/.github/workflows/deploy-prep.yml
index 0626e13..7e34f19 100644
--- a/.github/workflows/deploy-prep.yml
+++ b/.github/workflows/deploy-prep.yml
@@ -10,10 +10,10 @@ jobs:
     if: github.repository == 'anuraghazra/github-readme-stats'
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
       - name: Deployment Prep
         run: python ./.github/workflows/deploy-prep.py
-      - uses: stefanzweifel/git-auto-commit-action@v4
+      - uses: stefanzweifel/git-auto-commit-action@3ea6ae190baf489ba007f7c92608f33ce20ef04a # v4.16.0
         with:
           branch: vercel
           create_branch: true
diff --git a/.github/workflows/empty-issues-closer.yaml b/.github/workflows/empty-issues-closer.yaml
index 3f7a6bc..44babaf 100644
--- a/.github/workflows/empty-issues-closer.yaml
+++ b/.github/workflows/empty-issues-closer.yaml
@@ -26,10 +26,10 @@ jobs:
     name: Close empty issues
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3 # NOTE: Retrieve issue templates.
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 # NOTE: Retrieve issue templates.
 
       - name: Run empty issues closer action
-        uses: rickstaa/empty-issues-closer-action@v1
+        uses: rickstaa/empty-issues-closer-action@ed1f6e2f4c64f00e4ef6e9d0b03a822a58e33bee # v1.0.92
         env:
           github_token: ${{ secrets.GITHUB_TOKEN }}
         with:
diff --git a/.github/workflows/generate-theme-doc.yml b/.github/workflows/generate-theme-doc.yml
index e9929fc..5555946 100644
--- a/.github/workflows/generate-theme-doc.yml
+++ b/.github/workflows/generate-theme-doc.yml
@@ -29,10 +29,10 @@ jobs:
         node-version: [18.x]
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
 
       - name: Setup Node
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
         with:
           node-version: ${{ matrix.node-version }}
           cache: npm
diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml
index 80da17b..f12cd0d 100644
--- a/.github/workflows/label-pr.yml
+++ b/.github/workflows/label-pr.yml
@@ -21,6 +21,6 @@ jobs:
     if: github.repository == 'anuraghazra/github-readme-stats'
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/labeler@v4
+      - uses: actions/labeler@0967ca812e7fdc8f5f71402a1b486d5bd061fe20 # v4.2.0
         with:
           repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/preview-theme.yml b/.github/workflows/preview-theme.yml
index b583499..119bcd3 100644
--- a/.github/workflows/preview-theme.yml
+++ b/.github/workflows/preview-theme.yml
@@ -30,15 +30,15 @@ jobs:
         node-version: [18.x]
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
 
       - name: Setup Node
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
         with:
           node-version: ${{ matrix.node-version }}
           cache: npm
 
-      - uses: bahmutov/npm-install@v1
+      - uses: bahmutov/npm-install@c5482d70ec8706408996e31ac94075030694993f # v1.8.32
         with:
           useLockFile: false
 
diff --git a/.github/workflows/prs-cache-clean.yml b/.github/workflows/prs-cache-clean.yml
index 51e7717..3d31c4b 100644
--- a/.github/workflows/prs-cache-clean.yml
+++ b/.github/workflows/prs-cache-clean.yml
@@ -23,7 +23,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout
-        uses: actions/checkout@v3
+        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
 
       - name: Cleanup
         run: |
diff --git a/.github/workflows/stale-theme-pr-closer.yaml b/.github/workflows/stale-theme-pr-closer.yaml
index 6e6756d..cc943d2 100644
--- a/.github/workflows/stale-theme-pr-closer.yaml
+++ b/.github/workflows/stale-theme-pr-closer.yaml
@@ -27,15 +27,15 @@ jobs:
         node-version: [18.x]
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
 
       - name: Setup Node
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
         with:
           node-version: ${{ matrix.node-version }}
           cache: npm
 
-      - uses: bahmutov/npm-install@v1
+      - uses: bahmutov/npm-install@c5482d70ec8706408996e31ac94075030694993f # v1.8.32
         with:
           useLockFile: false
 
diff --git a/.github/workflows/top-issues-dashboard.yml b/.github/workflows/top-issues-dashboard.yml
index c5e5eae..f2783bf 100644
--- a/.github/workflows/top-issues-dashboard.yml
+++ b/.github/workflows/top-issues-dashboard.yml
@@ -25,7 +25,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Run top issues action
-        uses: rickstaa/top-issues-action@v1
+        uses: rickstaa/top-issues-action@d2877f7138b441041a7ed9682d4179fb5ecd8e48 # v1.3.18
         env:
           github_token: ${{ secrets.GITHUB_TOKEN }}
         with:
diff --git a/.github/workflows/update-langs.yaml b/.github/workflows/update-langs.yaml
index 1e67655..a59c483 100644
--- a/.github/workflows/update-langs.yaml
+++ b/.github/workflows/update-langs.yaml
@@ -27,10 +27,10 @@ jobs:
         node-version: [18.x]
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
 
       - name: Setup Node
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
         with:
           node-version: ${{ matrix.node-version }}
           cache: npm
@@ -44,7 +44,7 @@ jobs:
         run: npm run generate-langs-json
 
       - name: Create Pull Request if upstream language file is changed
-        uses: peter-evans/create-pull-request@v4
+        uses: peter-evans/create-pull-request@38e0b6e68b4c852a5500a94740f0e535e0d7ba54 # v4.2.4
         with:
           commit-message: "refactor: update languages JSON"
           branch: "update_langs/patch"
diff --git a/readme.md b/readme.md
index c4d9c8d..fc38996 100644
--- a/readme.md
+++ b/readme.md
@@ -140,7 +140,7 @@ Change the `?username=` value to your GitHub username.
 > By default, the stats card only shows statistics like stars, commits and pull requests from public repositories. To show private statistics on the stats card, you should [deploy your own instance](#deploy-on-your-own) using your own GitHub API token.
 
 > **Note**
-> Available ranks are S (top 1%), A+ (12.5%), A (25%), A- (37.5%), B+ (50%), B (62.5%), B- (75%), C+ (87.5%) and C (everyone). This ranking scheme is based on the [Japanese academic grading](https://wikipedia.org/wiki/Academic_grading_in_Japan) system. The global percentile is calculated as a weighted sum of percentiles for each statistic (number of commits, pull requests, issues, stars and followers), based on the cumulative distribution function of the [exponential](https://wikipedia.org/wiki/exponential_distribution) and the [log-normal](https://wikipedia.org/wiki/Log-normal_distribution) distributions. The implementation can be investigated at [src/calculateRank.js](./src/calculateRank.js). The circle around the rank shows 100 minus the global percentile.
+> Available ranks are S (top 1%), A+ (12.5%), A (25%), A- (37.5%), B+ (50%), B (62.5%), B- (75%), C+ (87.5%) and C (everyone). This ranking scheme is based on the [Japanese academic grading](https://wikipedia.org/wiki/Academic_grading_in_Japan) system. The global percentile is calculated as a weighted sum of percentiles for each statistic (number of commits, pull requests, reviews, issues, stars and followers), based on the cumulative distribution function of the [exponential](https://wikipedia.org/wiki/exponential_distribution) and the [log-normal](https://wikipedia.org/wiki/Log-normal_distribution) distributions. The implementation can be investigated at [src/calculateRank.js](./src/calculateRank.js). The circle around the rank shows 100 minus the global percentile.
 
 ### Hiding individual stats
 
diff --git a/src/calculateRank.js b/src/calculateRank.js
index 0320006..836779e 100644
--- a/src/calculateRank.js
+++ b/src/calculateRank.js
@@ -15,6 +15,7 @@ function log_normal_cdf(x) {
  * @param {number} params.commits Number of commits.
  * @param {number} params.prs The number of pull requests.
  * @param {number} params.issues The number of issues.
+ * @param {number} params.reviews The number of reviews.
  * @param {number} params.repos Total number of repos.
  * @param {number} params.stars The number of stars.
  * @param {number} params.followers The number of followers.
@@ -25,6 +26,7 @@ function calculateRank({
   commits,
   prs,
   issues,
+  reviews,
   // eslint-disable-next-line no-unused-vars
   repos, // unused
   stars,
@@ -36,6 +38,8 @@ function calculateRank({
     PRS_WEIGHT = 3;
   const ISSUES_MEDIAN = 25,
     ISSUES_WEIGHT = 1;
+  const REVIEWS_MEDIAN = 2,
+    REVIEWS_WEIGHT = 1;
   const STARS_MEDIAN = 50,
     STARS_WEIGHT = 4;
   const FOLLOWERS_MEDIAN = 10,
@@ -45,6 +49,7 @@ function calculateRank({
     COMMITS_WEIGHT +
     PRS_WEIGHT +
     ISSUES_WEIGHT +
+    REVIEWS_WEIGHT +
     STARS_WEIGHT +
     FOLLOWERS_WEIGHT;
 
@@ -56,6 +61,7 @@ function calculateRank({
     (COMMITS_WEIGHT * exponential_cdf(commits / COMMITS_MEDIAN) +
       PRS_WEIGHT * exponential_cdf(prs / PRS_MEDIAN) +
       ISSUES_WEIGHT * exponential_cdf(issues / ISSUES_MEDIAN) +
+      REVIEWS_WEIGHT * exponential_cdf(reviews / REVIEWS_MEDIAN) +
       STARS_WEIGHT * log_normal_cdf(stars / STARS_MEDIAN) +
       FOLLOWERS_WEIGHT * log_normal_cdf(followers / FOLLOWERS_MEDIAN)) /
       TOTAL_WEIGHT;
diff --git a/src/common/utils.js b/src/common/utils.js
index 1d16ef6..39c3bae 100644
--- a/src/common/utils.js
+++ b/src/common/utils.js
@@ -132,7 +132,7 @@ const isValidGradient = (colors) => {
  * Retrieves a gradient if color has more than one valid hex codes else a single color.
  *
  * @param {string} color The color to parse.
- * @param {string} fallbackColor The fallback color.
+ * @param {string | string[]} fallbackColor The fallback color.
  * @returns {string | string[]} The gradient or color.
  */
 const fallbackColor = (color, fallbackColor) => {
@@ -173,8 +173,8 @@ const request = (data, headers) => {
  * @param {object} props Function properties.
  * @param {string[]} props.items Array of items to layout.
  * @param {number} props.gap Gap between items.
- * @param {number[]?=} props.sizes Array of sizes for each item.
- * @param {"column" | "row"?=} props.direction Direction to layout items.
+ * @param {"column" | "row"=} props.direction Direction to layout items.
+ * @param {number[]=} props.sizes Array of sizes for each item.
  * @returns {string[]} Array of items with proper layout.
  */
 const flexLayout = ({ items, gap, direction, sizes = [] }) => {
diff --git a/src/fetchers/stats-fetcher.js b/src/fetchers/stats-fetcher.js
index 21d2611..2e79962 100644
--- a/src/fetchers/stats-fetcher.js
+++ b/src/fetchers/stats-fetcher.js
@@ -259,6 +259,7 @@ const fetchStats = async (
     all_commits: include_all_commits,
     commits: stats.totalCommits,
     prs: stats.totalPRs,
+    reviews: stats.totalReviews,
     issues: stats.totalIssues,
     repos: user.repositories.totalCount,
     stars: stats.totalStars,
diff --git a/src/translations.js b/src/translations.js
index 8cfdee5..47db4c4 100644
--- a/src/translations.js
+++ b/src/translations.js
@@ -238,7 +238,7 @@ const statCardLocales = ({ name, apostrophe }) => {
       "zh-tw": "审查的 PR 总数",
       cs: "Celkový počet PR",
       de: "Insgesamt überprüfte PRs",
-      en: "Total PRs reviewed",
+      en: "Total PRs Reviewed",
       bn: "সর্বমোট পুনরালোচনা করা PR",
       es: "PR totales revisados",
       fr: "Nombre total de PR examinés",


Test patch:
diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml
index 6eb6764..0571625 100644
--- a/.github/workflows/e2e-test.yml
+++ b/.github/workflows/e2e-test.yml
@@ -17,10 +17,10 @@ jobs:
         node-version: [18.x]
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
 
       - name: Setup Node
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
         with:
           node-version: ${{ matrix.node-version }}
           cache: npm
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 89afb05..43f28bb 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -18,10 +18,10 @@ jobs:
         node-version: [18.x]
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
 
       - name: Setup Node
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
         with:
           node-version: ${{ matrix.node-version }}
           cache: npm
@@ -40,4 +40,4 @@ jobs:
           npm run format:check
 
       - name: Code Coverage
-        uses: codecov/codecov-action@v3
+        uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
diff --git a/tests/api.test.js b/tests/api.test.js
index 2b013d9..3c72583 100644
--- a/tests/api.test.js
+++ b/tests/api.test.js
@@ -24,6 +24,7 @@ stats.rank = calculateRank({
   all_commits: false,
   commits: stats.totalCommits,
   prs: stats.totalPRs,
+  reviews: stats.totalReviews,
   issues: stats.totalIssues,
   repos: 1,
   stars: stats.totalStars,
diff --git a/tests/calculateRank.test.js b/tests/calculateRank.test.js
index a91299c..65f60df 100644
--- a/tests/calculateRank.test.js
+++ b/tests/calculateRank.test.js
@@ -10,6 +10,7 @@ describe("Test calculateRank", () => {
         commits: 0,
         prs: 0,
         issues: 0,
+        reviews: 0,
         repos: 0,
         stars: 0,
         followers: 0,
@@ -24,11 +25,12 @@ describe("Test calculateRank", () => {
         commits: 125,
         prs: 25,
         issues: 10,
+        reviews: 5,
         repos: 0,
         stars: 25,
         followers: 5,
       }),
-    ).toStrictEqual({ level: "B-", percentile: 69.333868386557 });
+    ).toStrictEqual({ level: "B-", percentile: 65.02918514848255 });
   });
 
   it("median user gets B+ rank", () => {
@@ -38,11 +40,12 @@ describe("Test calculateRank", () => {
         commits: 250,
         prs: 50,
         issues: 25,
+        reviews: 10,
         repos: 0,
         stars: 50,
         followers: 10,
       }),
-    ).toStrictEqual({ level: "B+", percentile: 50 });
+    ).toStrictEqual({ level: "B+", percentile: 46.09375 });
   });
 
   it("average user gets B+ rank (include_all_commits)", () => {
@@ -52,11 +55,12 @@ describe("Test calculateRank", () => {
         commits: 1000,
         prs: 50,
         issues: 25,
+        reviews: 10,
         repos: 0,
         stars: 50,
         followers: 10,
       }),
-    ).toStrictEqual({ level: "B+", percentile: 50 });
+    ).toStrictEqual({ level: "B+", percentile: 46.09375 });
   });
 
   it("advanced user gets A rank", () => {
@@ -66,11 +70,12 @@ describe("Test calculateRank", () => {
         commits: 500,
         prs: 100,
         issues: 50,
+        reviews: 20,
         repos: 0,
         stars: 200,
         followers: 40,
       }),
-    ).toStrictEqual({ level: "A", percentile: 22.72727272727273 });
+    ).toStrictEqual({ level: "A", percentile: 20.841471354166664 });
   });
 
   it("expert user gets A+ rank", () => {
@@ -80,11 +85,12 @@ describe("Test calculateRank", () => {
         commits: 1000,
         prs: 200,
         issues: 100,
+        reviews: 40,
         repos: 0,
         stars: 800,
         followers: 160,
       }),
-    ).toStrictEqual({ level: "A+", percentile: 6.082887700534744 });
+    ).toStrictEqual({ level: "A+", percentile: 5.575988339442828 });
   });
 
   it("sindresorhus gets S rank", () => {
@@ -94,10 +100,11 @@ describe("Test calculateRank", () => {
         commits: 1300,
         prs: 1500,
         issues: 4500,
+        reviews: 1000,
         repos: 0,
         stars: 600000,
         followers: 50000,
       }),
-    ).toStrictEqual({ level: "S", percentile: 0.49947889605312934 });
+    ).toStrictEqual({ level: "S", percentile: 0.4578556547153667 });
   });
 });
diff --git a/tests/e2e/e2e.test.js b/tests/e2e/e2e.test.js
index c32db6c..e220d52 100644
--- a/tests/e2e/e2e.test.js
+++ b/tests/e2e/e2e.test.js
@@ -16,13 +16,14 @@ const USER = "catelinemnemosyne";
 const STATS_DATA = {
   name: "Cateline Mnemosyne",
   totalPRs: 2,
+  totalReviews: 0,
   totalCommits: 8,
   totalIssues: 1,
   totalStars: 1,
   contributedTo: 1,
   rank: {
     level: "C",
-    percentile: 97.89377603631637,
+    percentile: 98.06929469995667,
   },
 };
 
diff --git a/tests/fetchStats.test.js b/tests/fetchStats.test.js
index 7cb4b39..80b19bf 100644
--- a/tests/fetchStats.test.js
+++ b/tests/fetchStats.test.js
@@ -108,6 +108,7 @@ describe("Test fetchStats", () => {
       all_commits: false,
       commits: 100,
       prs: 300,
+      reviews: 50,
       issues: 200,
       repos: 5,
       stars: 300,
@@ -141,6 +142,7 @@ describe("Test fetchStats", () => {
       all_commits: false,
       commits: 100,
       prs: 300,
+      reviews: 50,
       issues: 200,
       repos: 5,
       stars: 300,
@@ -180,6 +182,7 @@ describe("Test fetchStats", () => {
       all_commits: true,
       commits: 1000,
       prs: 300,
+      reviews: 50,
       issues: 200,
       repos: 5,
       stars: 300,
@@ -210,6 +213,7 @@ describe("Test fetchStats", () => {
       all_commits: true,
       commits: 1000,
       prs: 300,
+      reviews: 50,
       issues: 200,
       repos: 5,
       stars: 200,
@@ -238,6 +242,7 @@ describe("Test fetchStats", () => {
       all_commits: false,
       commits: 100,
       prs: 300,
+      reviews: 50,
       issues: 200,
       repos: 5,
       stars: 400,
@@ -266,6 +271,7 @@ describe("Test fetchStats", () => {
       all_commits: false,
       commits: 100,
       prs: 300,
+      reviews: 50,
       issues: 200,
       repos: 5,
       stars: 300,
@@ -294,6 +300,7 @@ describe("Test fetchStats", () => {
       all_commits: false,
       commits: 100,
       prs: 300,
+      reviews: 50,
       issues: 200,
       repos: 5,
       stars: 300,