Skip to content

Commit cf7d604

Browse files
localpcguytoddjordan
authored andcommitted
[FIX] Fix issue #543 - update redirect logic for <=2.15 to/from >=2.16
- Allow redirects for <=2.15 to/from >=2.16 if project is ember-data - Continue to disallow redirects for <=2.15 to/from >=2.16 if project is ember - Allow landing page to be displayed for versions >=2.16 - Add tests for ember-data version changes
1 parent f7ef16c commit cf7d604

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

app/routes/project-version.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ export default Route.extend({
3434
let transitionVersion = this.get('projectService').getUrlVersion();
3535
if (!classParams && !moduleParams && !namespaceParams && !functionParams) {
3636
// if there is no class, module, or namespace specified...
37-
let latestVersion = getLastVersion(model.get('project.projectVersions'))
38-
let isLatestVersion = (transitionVersion === latestVersion || transitionVersion === 'release')
39-
let isEmberProject = (model.get('project.id') === "ember")
40-
if (isLatestVersion && isEmberProject) {
37+
let latestVersion = getLastVersion(model.get('project.projectVersions'));
38+
let isLatestVersion = (transitionVersion === latestVersion || transitionVersion === 'release');
39+
let isEmberProject = (model.get('project.id') === "ember");
40+
let shouldConvertPackages = semverCompare(model.get('version'), '2.16') < 0;
41+
if ((!shouldConvertPackages || isLatestVersion) && isEmberProject) {
4142
// ... and the transition version is the latest release, and the selected docs are
4243
// ember (not Ember Data), then show the landing page
4344
return this.transitionTo('project-version.index')
@@ -135,7 +136,8 @@ export default Route.extend({
135136
// if the user is navigating to/from api versions >= 2.16, take them
136137
// to the home page instead of trying to translate the url
137138
let shouldConvertPackages = this.shouldConvertPackages(ver, this.get('projectService.version'));
138-
if (!shouldConvertPackages) {
139+
let isEmberProject = project === 'ember';
140+
if (!isEmberProject || !shouldConvertPackages) {
139141
this.transitionTo(`/${project}/${projectVersionID}/${endingRoute}`);
140142
} else {
141143
this.transitionTo(`/${project}/${projectVersionID}`);

tests/acceptance/scroll-reset-on-transition-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const { scrollContainerSelector } = config.APP;
99
moduleForAcceptance('Acceptance | scroll reset on transition');
1010

1111
test('reset scroll on transitions', async function(assert) {
12-
await visit('/ember/2.16');
12+
await visit('/ember/2.15');
1313

1414
$(scrollContainerSelector).scrollTop(1000);
1515
assert.notEqual($(scrollContainerSelector).scrollTop(), 0, 'scroll position is NOT zero after scroll on fresh visit');

tests/acceptance/switch-versions-test.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,18 @@ test('switching class properties tab less than 2.16 should retain', async functi
8484
assert.equal(currentURL(), '/ember/2.11/classes/Ember.Component/properties', 'navigated to v2.11 properties');
8585
});
8686

87-
test('switching from class version less than 2.16 to class version 2.16 should reset to first module page', async function(assert) {
87+
test('switching from class version less than 2.16 to class version 2.16 should reset to landing page', async function(assert) {
8888
await visit('/ember/2.7/classes/Ember.Component');
8989
assert.equal(currentURL(), '/ember/2.7/classes/Ember.Component', 'navigated to v2.7 class');
9090
await selectChoose('.select-container', '2.16');
91-
assert.equal(currentURL(), '/ember/2.16/modules/@ember%2Fapplication', 'navigated to v2.16 application module');
91+
assert.equal(currentURL(), '/ember/2.16', 'navigated to v2.16 landing page');
92+
});
93+
94+
test('switching from class version less than 2.16 to class version 2.16 should retain if project is ember-data', async function(assert) {
95+
await visit('/ember-data/2.7/classes/DS.Adapter');
96+
assert.equal(currentURL(), '/ember-data/2.7/classes/DS.Adapter', 'navigated to v2.7 class');
97+
await selectChoose('.select-container', '2.16');
98+
assert.equal(currentURL(), '/ember-data/2.16/classes/DS.Adapter', 'navigated to v2.16 landing page');
9299
});
93100

94101
test('switching from class version 2.16 to class version less then 2.16 should reset to first module page', async function (assert) {
@@ -97,3 +104,10 @@ test('switching from class version 2.16 to class version less then 2.16 should r
97104
await selectChoose('.select-container', '2.11');
98105
assert.equal(currentURL(), '/ember/2.11/modules/ember', 'navigated to v2.11 ember module');
99106
});
107+
108+
test('switching from class version 2.16 to class version less then 2.16 should retain if project is ember-data', async function(assert) {
109+
await visit('/ember-data/2.16/classes/DS.Adapter');
110+
assert.equal(currentURL(), '/ember-data/2.16/classes/DS.Adapter', 'navigated to v2.7 class');
111+
await selectChoose('.select-container', '2.11');
112+
assert.equal(currentURL(), '/ember-data/2.11/classes/DS.Adapter', 'navigated to v2.16 landing page');
113+
});

0 commit comments

Comments
 (0)