Skip to content

Commit b42660e

Browse files
authored
Merge pull request #3277 from NationalSecurityAgency/t#3254/fix-gem-message
#3254 Fix gem message
2 parents d6c1441 + 4dfb959 commit b42660e

File tree

3 files changed

+83
-3
lines changed

3 files changed

+83
-3
lines changed

dashboard/src/common-components/utilities/UseTimeUtils.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,11 @@ export const useTimeUtils = () => {
126126
return dayjs(date).isAfter(now.subtract(days, 'days'));
127127
}
128128

129+
const isInThePast = (date) => {
130+
const now = dayjs();
131+
return dayjs(date).isBefore(now);
132+
}
133+
129134
return {
130135
timeFromNow,
131136
isToday,
@@ -134,6 +139,7 @@ export const useTimeUtils = () => {
134139
formatDurationDiff,
135140
simpleClockFilter,
136141
relativeTime,
137-
isWithinNDays
142+
isWithinNDays,
143+
isInThePast
138144
}
139145
}

dashboard/src/skills-display/components/badges/BadgeCatalogItem.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ const otherUsersAchieved = computed(() => {
105105
<div class="text-center">
106106
<i :class="iconCss" style="font-size: 5rem;" />
107107
<placement-badge :badge="badge" class="mt-2" />
108-
<div v-if="badge.gem" class="text-muted text-orange-800">
109-
<small aria-label="`This is a gem badge and it expires in ${timeUtils.relativeTime(badge.endDate)}`">Expires {{ timeUtils.relativeTime(badge.endDate) }}</small>
108+
<div v-if="badge.gem" class="text-muted text-orange-800" :data-cy="`badge_${badge.badgeId}_gem`">
109+
<small aria-label="`This is a gem badge and it ${timeUtils.isInThePast(badge.endDate) ? 'expired' : 'expires'} ${timeUtils.relativeTime(badge.endDate)}`">{{timeUtils.isInThePast(badge.endDate) ? 'Expired' : 'Expires'}} {{ timeUtils.relativeTime(badge.endDate) }}</small>
110110
</div>
111111
<div v-if="badge.global" class="text-muted">
112112
<small><b>Global Badge</b></small>

e2e-tests/cypress/e2e/client-display/skills-display-badges_spec.js

+74
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16+
const moment = require("moment-timezone");
1617
describe('Skills Display Badges Tests', () => {
1718
beforeEach(() => {
1819
Cypress.env('disabledUILoginProp', true);
@@ -272,4 +273,77 @@ describe('Skills Display Badges Tests', () => {
272273
cy.get('[data-cy="toggleSkillDetails"]').click()
273274
cy.get('[data-cy="skillDescription-skill1"] [data-cy="pointsPerOccurrenceCard"] [data-cy="mediaInfoCardTitle"]')
274275
});
276+
277+
it('badge with an expiring gem', () => {
278+
cy.resetDb();
279+
cy.fixture('vars.json')
280+
.then((vars) => {
281+
if (!Cypress.env('oauthMode')) {
282+
cy.register(Cypress.env('proxyUser'), vars.defaultPass, false);
283+
}
284+
});
285+
cy.loginAsProxyUser();
286+
cy.createProject(1);
287+
cy.createSubject(1, 1);
288+
cy.createSkill(1, 1, 1, { name: 'Search blah skill 1' });
289+
cy.createSkill(1, 1, 2, { name: 'is a skill 2' });
290+
cy.createSkill(1, 1, 3, { name: 'find Blah other skill 3' });
291+
cy.createSkill(1, 1, 4, { name: 'Search nothing skill 4' });
292+
293+
const anHourAgo = new Date().getTime() - (1000 * 60 * 60)
294+
const twoDaysAgo = new Date().getTime() - (1000 * 60 * 60 * 48)
295+
const tomorrow = moment.utc().add(1, 'day').format('YYYY-MM-DD[T]HH:mm:ss[Z]');
296+
const twoDaysAgoMoment = moment.utc().subtract(2, 'day').format('YYYY-MM-DD[T]HH:mm:ss[Z]')
297+
298+
cy.createBadge(1, 1)
299+
cy.assignSkillToBadge(1, 1, 1);
300+
cy.createBadge(1, 1, { enabled: true, startDate: twoDaysAgoMoment, endDate: tomorrow })
301+
302+
cy.reportSkill(1, 1, Cypress.env('proxyUser'), twoDaysAgo);
303+
cy.reportSkill(1, 1, Cypress.env('proxyUser'), anHourAgo); // achieve badge
304+
305+
cy.cdVisit('/', true);
306+
cy.cdClickBadges();
307+
cy.get('[data-cy=achievedBadges]').contains('Badge 1');
308+
309+
cy.get('[data-cy="earnedBadgeLink_badge1"]').click();
310+
cy.get('[data-cy="badge_badge1_gem"]').contains('Expires in a day')
311+
});
312+
313+
it('badge with an expired gem', () => {
314+
cy.resetDb();
315+
cy.fixture('vars.json')
316+
.then((vars) => {
317+
if (!Cypress.env('oauthMode')) {
318+
cy.register(Cypress.env('proxyUser'), vars.defaultPass, false);
319+
}
320+
});
321+
cy.loginAsProxyUser();
322+
cy.createProject(1);
323+
cy.createSubject(1, 1);
324+
cy.createSkill(1, 1, 1, { name: 'Search blah skill 1' });
325+
cy.createSkill(1, 1, 2, { name: 'is a skill 2' });
326+
cy.createSkill(1, 1, 3, { name: 'find Blah other skill 3' });
327+
cy.createSkill(1, 1, 4, { name: 'Search nothing skill 4' });
328+
329+
const anHourAgo = new Date().getTime() - (1000 * 60 * 60)
330+
const twoDaysAgo = new Date().getTime() - (1000 * 60 * 60 * 48)
331+
const yesterday = moment.utc().subtract(1, 'day').format('YYYY-MM-DD[T]HH:mm:ss[Z]')
332+
const twoDaysAgoMoment = moment.utc().subtract(2, 'day').format('YYYY-MM-DD[T]HH:mm:ss[Z]')
333+
334+
cy.createBadge(1, 1)
335+
cy.assignSkillToBadge(1, 1, 1);
336+
cy.createBadge(1, 1, { enabled: true, startDate: twoDaysAgoMoment, endDate: yesterday })
337+
338+
cy.reportSkill(1, 1, Cypress.env('proxyUser'), twoDaysAgo);
339+
cy.reportSkill(1, 1, Cypress.env('proxyUser'), anHourAgo); // achieve badge
340+
341+
cy.cdVisit('/', true);
342+
cy.cdClickBadges();
343+
cy.get('[data-cy=availableBadges]').contains('Badge 1');
344+
cy.get('[data-cy="badge_badge1_gem"]').contains('Expired a day ago')
345+
346+
cy.get('[data-cy="badgeDetailsLink_badge1"]').click();
347+
cy.get('[data-cy="badge_badge1_gem"]').contains('Expired a day ago')
348+
});
275349
})

0 commit comments

Comments
 (0)