Skip to content

Commit 1c4cb84

Browse files
authored
Merge pull request anuraghazra#156 from anuraghazra/fix-repo-lang-fallback
fix: languages color fallback & hide lang if not present
2 parents 5ed75e1 + d394add commit 1c4cb84

File tree

2 files changed

+35
-8
lines changed

2 files changed

+35
-8
lines changed

src/renderRepoCard.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ const renderRepoCard = (repo, options = {}) => {
2727
} = options;
2828

2929
const header = show_owner ? nameWithOwner : name;
30-
const langName = primaryLanguage ? primaryLanguage.name : "Unspecified";
31-
const langColor = primaryLanguage ? primaryLanguage.color : "#333";
30+
const langName = (primaryLanguage && primaryLanguage.name) || "Unspecified";
31+
const langColor = (primaryLanguage && primaryLanguage.color) || "#333";
3232

3333
const height = 120;
3434
const shiftText = langName.length > 15 ? 0 : 30;
@@ -65,12 +65,14 @@ const renderRepoCard = (repo, options = {}) => {
6565
</g>
6666
`;
6767

68-
const svgLanguage = `
69-
<g transform="translate(30, 100)">
68+
const svgLanguage = primaryLanguage
69+
? `
70+
<g data-testid="primary-lang" transform="translate(30, 100)">
7071
<circle data-testid="lang-color" cx="0" cy="-5" r="6" fill="${langColor}" />
71-
<text data-testid="lang" class="gray" x="15">${langName}</text>
72+
<text data-testid="lang-name" class="gray" x="15">${langName}</text>
7273
</g>
73-
`;
74+
`
75+
: "";
7476

7577
const svgStars =
7678
stargazers.totalCount > 0 &&
@@ -120,7 +122,7 @@ const renderRepoCard = (repo, options = {}) => {
120122
121123
${svgLanguage}
122124
123-
<g transform="translate(${155 - shiftText}, 100)">
125+
<g transform="translate(${primaryLanguage ? 155 - shiftText : 25}, 100)">
124126
${FlexLayout({ items: [svgStars, svgForks], gap: 65 }).join("")}
125127
</g>
126128

tests/renderRepoCard.test.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe("Test renderRepoCard", () => {
3333
);
3434
expect(queryByTestId(document.body, "stargazers")).toHaveTextContent("38k");
3535
expect(queryByTestId(document.body, "forkcount")).toHaveTextContent("100");
36-
expect(queryByTestId(document.body, "lang")).toHaveTextContent(
36+
expect(queryByTestId(document.body, "lang-name")).toHaveTextContent(
3737
"TypeScript"
3838
);
3939
expect(queryByTestId(document.body, "lang-color")).toHaveAttribute(
@@ -82,6 +82,7 @@ describe("Test renderRepoCard", () => {
8282
},
8383
});
8484

85+
expect(queryByTestId(document.body, "primary-lang")).toBeInTheDocument();
8586
expect(document.getElementsByTagName("g")[1]).toHaveAttribute(
8687
"transform",
8788
"translate(155, 100)"
@@ -102,6 +103,30 @@ describe("Test renderRepoCard", () => {
102103
);
103104
});
104105

106+
it("should hide language if primaryLanguage is null & fallback to correct values", () => {
107+
document.body.innerHTML = renderRepoCard({
108+
...data_repo.repository,
109+
primaryLanguage: null,
110+
});
111+
112+
expect(queryByTestId(document.body, "primary-lang")).toBeNull();
113+
114+
document.body.innerHTML = renderRepoCard({
115+
...data_repo.repository,
116+
primaryLanguage: { color: null, name: null },
117+
});
118+
119+
expect(queryByTestId(document.body, "primary-lang")).toBeInTheDocument();
120+
expect(queryByTestId(document.body, "lang-color")).toHaveAttribute(
121+
"fill",
122+
"#333"
123+
);
124+
125+
expect(queryByTestId(document.body, "lang-name")).toHaveTextContent(
126+
"Unspecified"
127+
);
128+
});
129+
105130
it("should render default colors properly", () => {
106131
document.body.innerHTML = renderRepoCard(data_repo.repository);
107132

0 commit comments

Comments
 (0)