Skip to content

Commit 9eeb443

Browse files
committed
fix: add tests for redirects and links on tutorial links
1 parent f5a285c commit 9eeb443

File tree

2 files changed

+48
-10
lines changed

2 files changed

+48
-10
lines changed

cypress/integration/redirects.spec.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
describe('REDIRECTS', () => {
2+
function assertHashRouteRedirect (path, redirect) {
3+
cy.visit(`/#${path}`)
4+
cy.location('pathname').should('eq', redirect || path)
5+
}
6+
7+
it('404 redirect', () => {
8+
cy.visit('/unknown-path')
9+
cy.location('pathname').should('eq', '/404')
10+
cy.visit('/unknown-path/02')
11+
cy.location('pathname').should('eq', '/404')
12+
})
13+
14+
it('should redirect the old hash urls to the new paths', () => {
15+
assertHashRouteRedirect('/tutorials')
16+
assertHashRouteRedirect('/news')
17+
assertHashRouteRedirect('/host')
18+
assertHashRouteRedirect('/events')
19+
assertHashRouteRedirect('/chapters', '/events')
20+
assertHashRouteRedirect('/build')
21+
assertHashRouteRedirect('/contribute')
22+
assertHashRouteRedirect('/data-structures')
23+
assertHashRouteRedirect('/data-structures/resources')
24+
assertHashRouteRedirect('/data-structures/01')
25+
assertHashRouteRedirect('/basics')
26+
assertHashRouteRedirect('/basics/')
27+
assertHashRouteRedirect('/basics/resources')
28+
assertHashRouteRedirect('/basics/02')
29+
assertHashRouteRedirect('/unknown-route', '/404')
30+
assertHashRouteRedirect('/unknown-route/01', '/404')
31+
assertHashRouteRedirect('/news/01', '/404')
32+
})
33+
})

cypress/integration/tutorials.spec.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,12 @@ describe(`DISPLAYS CORRECT TUTORIALS ON HOMEPAGE AND TUTORIALS PAGE`, function (
3232
cy.get('[data-cy=tutorial-card-title]').should('have.length', courses.all.length) // displaying # of tutorials in all array in courses.json
3333
.and('have.length', Object.keys(tutorials).length) // displaying # of tutorials in tutorials.json
3434
for (let i = 0; i < courses.all.length; i++) {
35-
cy.get('[data-cy=tutorial-card-title]').eq(i).should('contain', tutorials[courses.all[i]].title)
35+
const tutorial = tutorials[courses.all[i]]
36+
37+
cy.get('[data-cy=tutorial-card-title]').eq(i).should('contain', tutorial.title)
38+
cy.get(`.tutorial a[href="/${tutorial.url}"]`).click()
39+
cy.location('pathname').should('eq', `/${tutorial.url}`)
40+
cy.visit(`/tutorials`)
3641
}
3742
}
3843

@@ -50,7 +55,12 @@ describe(`DISPLAYS CORRECT TUTORIALS ON HOMEPAGE AND TUTORIALS PAGE`, function (
5055
cy.visit(`/`)
5156
cy.get('[data-cy=tutorial-card-title]').should('have.length', courses.featured.length)
5257
for (let i = 0; i < courses.featured.length; i++) {
53-
cy.get('[data-cy=tutorial-card-title]').eq(i).should('contain', tutorials[courses.featured[i]].title)
58+
const tutorial = tutorials[courses.featured[i]]
59+
60+
cy.get('[data-cy=tutorial-card-title]').eq(i).should('contain', tutorial.title)
61+
cy.get(`.tutorial a[href="/${tutorial.url}"]`).click()
62+
cy.location('pathname').should('eq', `/${tutorial.url}`)
63+
cy.visit(`/`)
5464
}
5565
})
5666

@@ -440,7 +450,7 @@ function advanceThroughLessons (tutorialId) {
440450
}
441451

442452
function advanceToNextLesson () {
443-
// ADVANCE TO NEXT LESSON AS ABLE OR BY CHEATING, DEPENDING ON LESSON TYPE
453+
// ADVANCE TO NEXT LESSON DEPENDING ON ITS TYPE
444454
let advance = {}
445455

446456
switch (lessonType) {
@@ -467,13 +477,8 @@ function advanceThroughLessons (tutorialId) {
467477
}
468478

469479
it(`${advance.msg}`, function () {
470-
if (advance.method === 'cheat') {
471-
cy.log(`cannot fully test tutorial ${tutorialId}, lesson ${lessonNr} because it is of type ${lessonType}`)
472-
cy.visit(`/${tutorialName}/${nextLessonNr}`)
473-
} else if (advance.method === 'click') {
474-
cy.get(`[data-cy=${advance.buttonData}]`).should('be.visible').and('not.be.disabled')
475-
cy.get(`[data-cy=${advance.buttonData}]`).click()
476-
}
480+
cy.get(`[data-cy=${advance.buttonData}]`).should('be.visible').and('not.be.disabled')
481+
cy.get(`[data-cy=${advance.buttonData}]`).click()
477482
cy.url().should('include', `/${tutorialName}/${nextLessonNr}`)
478483
cy.contains('h1', lessons[index + 1].title)
479484
})

0 commit comments

Comments
 (0)