Skip to content

Commit 9e2fff2

Browse files
committed
crate.version: Redirect to unspecific version URL if requested version does not exist
1 parent 1dbf1e8 commit 9e2fff2

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

app/routes/crate/version.js

+2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ export default class VersionRoute extends Route {
5252
const version = versions.find(version => version.num === params.version_num);
5353
if (params.version_num && !version) {
5454
this.notifications.error(`Version '${params.version_num}' of crate '${crate.name}' does not exist`);
55+
this.replaceWith('crate.index');
56+
return;
5557
}
5658

5759
return {

tests/acceptance/crate-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ module('Acceptance | crate page', function (hooks) {
8888

8989
await visit('/crates/nanomsg/0.7.0');
9090

91-
assert.equal(currentURL(), '/crates/nanomsg/0.7.0');
91+
assert.equal(currentURL(), '/crates/nanomsg');
9292
assert.dom('[data-test-heading] [data-test-crate-name]').hasText('nanomsg');
9393
assert.dom('[data-test-heading] [data-test-crate-version]').hasText('0.6.1');
9494
assert.dom('[data-test-notification-message]').hasText("Version '0.7.0' of crate 'nanomsg' does not exist");

tests/routes/crate/version/model-test.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,16 @@ module('Route | crate.version | model() hook', function (hooks) {
2222
assert.dom('[data-test-notification-message]').doesNotExist();
2323
});
2424

25-
test('defaults to `max_version` if requested version can not be found', async function (assert) {
25+
test('redirects to unspecific version URL', async function (assert) {
2626
let crate = this.server.create('crate', { name: 'foo' });
2727
this.server.create('version', { crate, num: '1.0.0' });
2828
this.server.create('version', { crate, num: '1.2.3', yanked: true });
2929
this.server.create('version', { crate, num: '2.0.0-beta.1' });
3030

3131
await visit('/crates/foo/2.0.0');
32-
// TODO this should probably redirect to `/crates/foo` instead
33-
assert.equal(currentURL(), `/crates/foo/2.0.0`);
32+
assert.equal(currentURL(), `/crates/foo`);
3433
assert.dom('[data-test-crate-name]').hasText('foo');
35-
assert.dom('[data-test-crate-version]').hasText('2.0.0-beta.1');
34+
assert.dom('[data-test-crate-version]').hasText('1.0.0');
3635
assert.dom('[data-test-notification-message="error"]').hasText("Version '2.0.0' of crate 'foo' does not exist");
3736
});
3837
});

0 commit comments

Comments
 (0)