diff --git a/src/renderStatsCard.js b/src/renderStatsCard.js index 7f9df53..416ce53 100644 --- a/src/renderStatsCard.js +++ b/src/renderStatsCard.js @@ -124,9 +124,11 @@ const renderStatsCard = (stats = {}, options = { hide: [] }) => { }); // Conditionally rendered elements + + const apostrophe = ["x", "s"].includes(name.slice(-1)) ? "" : "s"; const title = hide_title ? "" - : `${name}'s GitHub Stats`; + : `${name}'${apostrophe} GitHub Stats`; const border = hide_border ? "" diff --git a/tests/renderStatsCard.test.js b/tests/renderStatsCard.test.js index f1c337c..c161f12 100644 --- a/tests/renderStatsCard.test.js +++ b/tests/renderStatsCard.test.js @@ -39,6 +39,20 @@ describe("Test renderStatsCard", () => { expect(queryByTestId(document.body, "rank-circle")).toBeInTheDocument(); }); + it("should have proper name apostrophe", () => { + document.body.innerHTML = renderStatsCard({ ...stats, name: "Anil Das" }); + + expect(document.getElementsByClassName("header")[0].textContent).toBe( + "Anil Das' GitHub Stats" + ); + + document.body.innerHTML = renderStatsCard({ ...stats, name: "Felix" }); + + expect(document.getElementsByClassName("header")[0].textContent).toBe( + "Felix' GitHub Stats" + ); + }); + it("should hide individual stats", () => { document.body.innerHTML = renderStatsCard(stats, { hide: "['issues', 'prs', 'contribs']",