Skip to content

Commit 3bcf4ba

Browse files
authored
Merge pull request #2920 from codecrafters-io/update-development-status-labels-to-pills
refactor: rename development status label to pill in tests and UI
2 parents de37f3c + 318ad9a commit 3bcf4ba

File tree

7 files changed

+54
-58
lines changed

7 files changed

+54
-58
lines changed

app/components/roadmap-page/course-extension-idea-card.hbs

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,39 +12,38 @@
1212
</div>
1313

1414
{{#if @courseExtensionIdea.developmentStatusIsInProgress}}
15-
<div
16-
class="text-xs text-white font-semibold bg-yellow-500 dark:bg-yellow-600 rounded px-1.5 py-1 ml-3 mt-0.5 flex items-center"
17-
data-test-development-status-label
18-
>
19-
in progress
20-
{{svg-jar "shield-check" class="w-4 ml-1 fill-current"}}
15+
<Pill @color="yellow" class="ml-3 mt-0.5" data-test-development-status-pill>
16+
<div class="flex items-center gap-1">
17+
{{svg-jar "shield-check" class="w-3 fill-current"}}
18+
In Progress
19+
</div>
2120

2221
{{#if this.userHasVoted}}
2322
<EmberTooltip @text="We're currently building this challenge extension. We'll notify you when it launches." />
2423
{{else}}
2524
<EmberTooltip @text="We're currently building this challenge extension. Upvote this idea to be notified when it launches." />
2625
{{/if}}
27-
</div>
26+
</Pill>
2827
{{else if @courseExtensionIdea.developmentStatusIsReleased}}
29-
<div
30-
class="text-xs text-white font-semibold bg-teal-500 dark:bg-teal-600 rounded px-1.5 py-1 ml-3 mt-0.5 flex items-center"
31-
data-test-development-status-label
32-
>
33-
<LinkTo @route="catalog">released</LinkTo>
34-
{{svg-jar "check" class="w-4 ml-1 fill-current"}}
35-
<EmberTooltip @text="This challenge extension is now available! Visit the catalog to try it out." />
36-
</div>
28+
<LinkTo @route="catalog" class="ml-3 mt-0.5">
29+
<Pill @color="green" data-test-development-status-pill>
30+
<div class="flex items-center gap-1">
31+
{{svg-jar "check" class="w-3 fill-current"}}
32+
Released
33+
</div>
34+
35+
<EmberTooltip @text="This challenge extension is now available! Visit the catalog to try it out." />
36+
</Pill>
37+
</LinkTo>
3738
{{else if this.userHasVoted}}
3839
<div class="h-7 w-7 bg-teal-500 dark:bg-teal-600 rounded flex items-center justify-center">
3940
{{svg-jar "chevron-up" class="w-7 fill-current text-white"}}
4041
</div>
4142
{{else if @courseExtensionIdea.isNewlyCreated}}
42-
<div
43-
class="text-xs text-teal-500 dark:text-teal-600 font-semibold border border-teal-500 rounded px-1.5 py-1 ml-3 mt-0.5"
44-
data-test-development-status-label
45-
>
46-
new
47-
</div>
43+
<Pill @color="green" class="ml-3 mt-0.5" data-test-development-status-pill>
44+
New
45+
<EmberTooltip @text="This is a recently added idea! Vote to help us decide which ideas to prioritize." />
46+
</Pill>
4847
{{/if}}
4948
</div>
5049
<div class="prose dark:prose-invert prose-sm">

app/components/roadmap-page/course-idea-card.gts

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { LinkTo } from '@ember/routing';
1212
// @ts-expect-error not ts-ified yet
1313
import { on } from '@ember/modifier';
1414
import { tracked } from '@glimmer/tracking';
15+
import Pill from 'codecrafters-frontend/components/pill';
1516
import type AuthenticatorService from 'codecrafters-frontend/services/authenticator';
1617
import type Store from '@ember-data/store';
1718
import type CourseIdeaModel from 'codecrafters-frontend/models/course-idea';
@@ -88,39 +89,37 @@ export default class CourseIdeaCardComponent extends Component<Signature> {
8889
</div>
8990

9091
{{#if @courseIdea.developmentStatusIsInProgress}}
91-
<div
92-
class='text-xs text-white font-semibold bg-yellow-500 dark:bg-yellow-600 rounded px-1.5 py-1 ml-3 mt-0.5 flex items-center'
93-
data-test-development-status-label
94-
>
95-
in progress
96-
{{svgJar 'shield-check' class='w-4 ml-1 fill-current'}}
92+
<Pill @color='yellow' class='ml-3 mt-0.5' data-test-development-status-pill>
93+
<div class='flex items-center gap-1'>
94+
{{svgJar 'shield-check' class='w-3 fill-current'}}
95+
In Progress
96+
</div>
97+
9798
{{#if this.userHasVoted}}
9899
<EmberTooltip @text="We're currently building this challenge. We'll notify you when it launches." />
99100
{{else}}
100101
<EmberTooltip @text="We're currently building this challenge. Upvote this idea to be notified when it launches." />
101102
{{/if}}
102-
</div>
103+
</Pill>
103104
{{else if @courseIdea.developmentStatusIsReleased}}
104-
<div
105-
class='text-xs text-white font-semibold bg-teal-500 dark:bg-teal-600 rounded px-1.5 py-1 ml-3 mt-0.5 flex items-center'
106-
data-test-development-status-label
107-
>
108-
<LinkTo @route='catalog'>released</LinkTo>
109-
{{svgJar 'check' class='w-4 ml-1 fill-current'}}
110-
<EmberTooltip @text='This challenge is now available! Visit the catalog to try it out.' />
111-
</div>
105+
<LinkTo @route='catalog' class='ml-3 mt-0.5'>
106+
<Pill @color='green' data-test-development-status-pill>
107+
<div class='flex items-center gap-1'>
108+
{{svgJar 'check' class='w-3 fill-current'}}
109+
Released
110+
</div>
111+
<EmberTooltip @text='This challenge is now available! Visit the catalog to try it out.' />
112+
</Pill>
113+
</LinkTo>
112114
{{else if this.userHasVoted}}
113115
<div class='h-7 w-7 bg-teal-500 dark:bg-teal-600 rounded flex items-center justify-center'>
114116
{{svgJar 'chevron-up' class='w-7 fill-current text-white'}}
115117
</div>
116118
{{else if @courseIdea.isNewlyCreated}}
117-
<div
118-
class='text-xs text-teal-500 font-semibold border border-teal-500 rounded px-1.5 py-1 ml-3 mt-0.5'
119-
data-test-development-status-label
120-
>
121-
new
119+
<Pill @color='green' class='ml-3 mt-0.5' data-test-development-status-pill>
120+
New
122121
<EmberTooltip @text='This is a recently added idea! Vote to help us decide which ideas to prioritize.' />
123-
</div>
122+
</Pill>
124123
{{/if}}
125124
</div>
126125
<div class='prose dark:prose-invert prose-sm'>

mirage/utils/create-course-extension-ideas.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ export default function createCourseExtensionIdeas(server) {
77
createdAt: new Date(),
88
descriptionMarkdown: courseExtensionIdeaData.description_md,
99
developmentStatus: courseExtensionIdeaData.development_status,
10-
developmentStatusLabelText: courseExtensionIdeaData.development_status,
1110
name: courseExtensionIdeaData.name,
1211
slug: courseExtensionIdeaData.slug,
1312
votesCount: 0,

mirage/utils/create-course-ideas.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export default function createCourseIdeas(server) {
66
createdAt: new Date(),
77
descriptionMarkdown: courseIdeaData.description_md,
88
developmentStatus: courseIdeaData.development_status,
9-
developmentStatusLabelText: courseIdeaData.development_status,
109
name: courseIdeaData.name,
1110
votesCount: 0,
1211
});

tests/acceptance/roadmap-page/course-extension-ideas-test.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ module('Acceptance | roadmap-page | course-extension-ideas', function (hooks) {
2929
const releasedIdeaCard = roadmapPage.findCourseExtensionIdeaCard('Persistence');
3030
const notStartedIdeaCard = roadmapPage.findCourseExtensionIdeaCard('Geospatial commands');
3131

32-
assert.strictEqual(releasedIdeaCard.developmentStatusLabelText, 'released', 'released idea has label');
32+
assert.strictEqual(releasedIdeaCard.developmentStatusPillText, 'Released', 'released idea has label');
3333
assert.true(releasedIdeaCard.isGreyedOut, 'released idea is greyed out');
3434

35-
assert.notEqual(notStartedIdeaCard.developmentStatusLabelText, 'released', 'not started idea has no label');
35+
assert.notEqual(notStartedIdeaCard.developmentStatusPillText, 'Released', 'not started idea has no label');
3636
assert.false(notStartedIdeaCard.isGreyedOut, 'not started idea is not greyed out');
3737

3838
// TODO: Test that hovering on vote shows tooltip
@@ -84,14 +84,14 @@ module('Acceptance | roadmap-page | course-extension-ideas', function (hooks) {
8484
await roadmapPage.visitCourseExtensionIdeasTab();
8585

8686
let courseExtensionIdeaCard = roadmapPage.findCourseExtensionIdeaCard('Geospatial commands');
87-
await courseExtensionIdeaCard.hoverOnDevelopmentStatusLabel();
87+
await courseExtensionIdeaCard.hoverOnDevelopmentStatusPill();
8888

8989
assertTooltipContent(assert, {
9090
contentString: "We're currently building this challenge extension. Upvote this idea to be notified when it launches.",
9191
});
9292

9393
await courseExtensionIdeaCard.clickOnVoteButton();
94-
await courseExtensionIdeaCard.hoverOnDevelopmentStatusLabel();
94+
await courseExtensionIdeaCard.hoverOnDevelopmentStatusPill();
9595

9696
assertTooltipContent(assert, {
9797
contentString: "We're currently building this challenge extension. We'll notify you when it launches.",
@@ -100,7 +100,7 @@ module('Acceptance | roadmap-page | course-extension-ideas', function (hooks) {
100100
await courseExtensionIdeaCard.clickOnVoteButton();
101101

102102
courseExtensionIdeaCard = roadmapPage.findCourseExtensionIdeaCard('Persistence');
103-
await courseExtensionIdeaCard.hoverOnDevelopmentStatusLabel();
103+
await courseExtensionIdeaCard.hoverOnDevelopmentStatusPill();
104104

105105
assertTooltipContent(assert, {
106106
contentString: 'This challenge extension is now available! Visit the catalog to try it out.',

tests/acceptance/roadmap-page/course-ideas-test.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ module('Acceptance | roadmap-page | course-ideas', function (hooks) {
2727
const releasedIdeaCard = roadmapPage.findCourseIdeaCard('Build your own Regex Parser');
2828
const notStartedIdeaCard = roadmapPage.findCourseIdeaCard('Build your own Shell');
2929

30-
assert.strictEqual(releasedIdeaCard.developmentStatusLabelText, 'released', 'released idea has label');
30+
assert.strictEqual(releasedIdeaCard.developmentStatusPillText, 'Released', 'released idea has label');
3131
assert.true(releasedIdeaCard.isGreyedOut, 'released idea is greyed out');
3232

33-
assert.notEqual(notStartedIdeaCard.developmentStatusLabelText, 'released', 'not started idea has no label');
33+
assert.notEqual(notStartedIdeaCard.developmentStatusPillText, 'Released', 'not started idea has no label');
3434
assert.false(notStartedIdeaCard.isGreyedOut, 'not started idea is not greyed out');
3535

3636
// TODO: Test that hovering on vote shows tooltip
@@ -85,14 +85,14 @@ module('Acceptance | roadmap-page | course-ideas', function (hooks) {
8585
await roadmapPage.visit();
8686

8787
let courseIdeaCard = roadmapPage.findCourseIdeaCard('Build your own Regex Parser');
88-
await courseIdeaCard.hoverOnDevelopmentStatusLabel();
88+
await courseIdeaCard.hoverOnDevelopmentStatusPill();
8989

9090
assertTooltipContent(assert, {
9191
contentString: "We're currently building this challenge. Upvote this idea to be notified when it launches.",
9292
});
9393

9494
await courseIdeaCard.clickOnVoteButton();
95-
await courseIdeaCard.hoverOnDevelopmentStatusLabel();
95+
await courseIdeaCard.hoverOnDevelopmentStatusPill();
9696

9797
assertTooltipContent(assert, {
9898
contentString: "We're currently building this challenge. We'll notify you when it launches.",
@@ -101,7 +101,7 @@ module('Acceptance | roadmap-page | course-ideas', function (hooks) {
101101
await courseIdeaCard.clickOnVoteButton();
102102

103103
courseIdeaCard = roadmapPage.findCourseIdeaCard('Build your own SQLite');
104-
await courseIdeaCard.hoverOnDevelopmentStatusLabel();
104+
await courseIdeaCard.hoverOnDevelopmentStatusPill();
105105

106106
assertTooltipContent(assert, {
107107
contentString: 'This challenge is now available! Visit the catalog to try it out.',

tests/pages/roadmap-page.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ import createPage from 'codecrafters-frontend/tests/support/create-page';
44
export default createPage({
55
courseExtensionIdeaCards: collection('[data-test-course-extension-idea-card]', {
66
clickOnVoteButton: clickable('[data-test-vote-button]'),
7-
developmentStatusLabelText: text('[data-test-development-status-label]'),
8-
hoverOnDevelopmentStatusLabel: triggerable('mouseenter', '[data-test-development-status-label]'),
7+
developmentStatusPillText: text('[data-test-development-status-pill]'),
8+
hoverOnDevelopmentStatusPill: triggerable('mouseenter', '[data-test-development-status-pill]'),
99
isGreyedOut: hasClass('opacity-50'),
1010
name: text('[data-test-course-extension-idea-name]'),
1111
voteButtonText: text('[data-test-vote-button]'),
1212
}),
1313

1414
courseIdeaCards: collection('[data-test-course-idea-card]', {
1515
clickOnVoteButton: clickable('[data-test-vote-button]'),
16-
developmentStatusLabelText: text('[data-test-development-status-label]'),
17-
hoverOnDevelopmentStatusLabel: triggerable('mouseenter', '[data-test-development-status-label]'),
16+
developmentStatusPillText: text('[data-test-development-status-pill]'),
17+
hoverOnDevelopmentStatusPill: triggerable('mouseenter', '[data-test-development-status-pill]'),
1818
isGreyedOut: hasClass('opacity-50'),
1919
name: text('[data-test-course-idea-name]'),
2020
voteButtonText: text('[data-test-vote-button]'),

0 commit comments

Comments
 (0)