Skip to content

Commit 6124efd

Browse files
committed
app: Fetch crate downloads with versions
1 parent 437a1a5 commit 6124efd

File tree

4 files changed

+9
-43
lines changed

4 files changed

+9
-43
lines changed

app/adapters/crate.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ export default class CrateAdapter extends ApplicationAdapter {
99
return super.findRecord(store, type, id, setDefaultInclude(snapshot));
1010
}
1111

12+
findHasMany(store, snapshot, url, relationship) {
13+
if (relationship.key === 'version_downloads') {
14+
// This ensures that related versions are included so we don't have to wait for versions
15+
// request to finish for `belongsTo` relationships.
16+
url += '?include=versions';
17+
}
18+
return super.findHasMany(store, snapshot, url, relationship);
19+
}
20+
1221
queryRecord(store, type, query, adapterOptions) {
1322
return super.queryRecord(store, type, setDefaultInclude(query), adapterOptions);
1423
}

app/routes/crate/version.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,6 @@ export default class VersionRoute extends Route {
1515
async model(params, transition) {
1616
let crate = this.modelFor('crate');
1717

18-
// TODO: Resolved version without waiting for versions to be resolved
19-
// The main blocker for this right now is that we have a "belongsTo" relationship between
20-
// `version-download` and `version` in sync mode. This requires us to wait for `versions` to
21-
// exist before `version-download` can be created.
22-
try {
23-
await crate.loadVersionsTask.perform();
24-
} catch (error) {
25-
let title = `${crate.name}: Failed to load version data`;
26-
return this.router.replaceWith('catch-all', { transition, error, title, tryAgain: true });
27-
}
28-
2918
let version;
3019
let requestedVersion = params.version_num;
3120
let num = requestedVersion || crate.default_version;

e2e/acceptance/crate.spec.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -111,22 +111,6 @@ test.describe('Acceptance | crate page', { tag: '@acceptance' }, () => {
111111
await expect(page.locator('[data-test-try-again]')).toHaveCount(0);
112112
});
113113

114-
test('other versions loading error shows an error message', async ({ page, msw }) => {
115-
let crate = msw.db.crate.create({ name: 'nanomsg' });
116-
msw.db.version.create({ crate, num: '0.6.0' });
117-
msw.db.version.create({ crate, num: '0.6.1' });
118-
119-
await msw.worker.use(http.get('/api/v1/crates/:crate_name/versions', () => HttpResponse.json({}, { status: 500 })));
120-
121-
await page.goto('/');
122-
await page.click('[data-test-just-updated] [data-test-crate-link="0"]');
123-
await expect(page).toHaveURL('/crates/nanomsg/0.6.0');
124-
await expect(page.locator('[data-test-404-page]')).toBeVisible();
125-
await expect(page.locator('[data-test-title]')).toHaveText('nanomsg: Failed to load version data');
126-
await expect(page.locator('[data-test-go-back]')).toHaveCount(0);
127-
await expect(page.locator('[data-test-try-again]')).toBeVisible();
128-
});
129-
130114
test('works for non-canonical names', async ({ page, msw }) => {
131115
let crate = msw.db.crate.create({ name: 'foo-bar' });
132116
msw.db.version.create({ crate });

tests/acceptance/crate-test.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -117,22 +117,6 @@ module('Acceptance | crate page', function (hooks) {
117117
assert.dom('[data-test-try-again]').doesNotExist();
118118
});
119119

120-
test('other versions loading error shows an error message', async function (assert) {
121-
let crate = this.db.crate.create({ name: 'nanomsg' });
122-
this.db.version.create({ crate, num: '0.6.0' });
123-
this.db.version.create({ crate, num: '0.6.1' });
124-
125-
this.worker.use(http.get('/api/v1/crates/:crate_name/versions', () => HttpResponse.json({}, { status: 500 })));
126-
127-
await visit('/');
128-
await click('[data-test-just-updated] [data-test-crate-link="0"]');
129-
assert.strictEqual(currentURL(), '/crates/nanomsg/0.6.0');
130-
assert.dom('[data-test-404-page]').exists();
131-
assert.dom('[data-test-title]').hasText('nanomsg: Failed to load version data');
132-
assert.dom('[data-test-go-back]').doesNotExist();
133-
assert.dom('[data-test-try-again]').exists();
134-
});
135-
136120
test('works for non-canonical names', async function (assert) {
137121
let crate = this.db.crate.create({ name: 'foo-bar' });
138122
this.db.version.create({ crate });

0 commit comments

Comments
 (0)