Skip to content

Commit a6763cb

Browse files
authored
Merge pull request #7889 from punkeel/patch-1
controllers/crates: default to sort by recent downloads
2 parents b6ddda3 + 39a2ff0 commit a6763cb

File tree

4 files changed

+15
-9
lines changed

4 files changed

+15
-9
lines changed

app/controllers/crates.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default class CratesController extends Controller {
99
queryParams = ['page', 'per_page', 'sort'];
1010
@tracked page = '1';
1111
@tracked per_page = 50;
12-
@tracked sort = 'alpha';
12+
@tracked sort = 'recent-downloads';
1313

1414
@reads('model.meta.total') totalItems;
1515
@pagination() pagination;

e2e/acceptance/crates.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { test, expect } from '@/e2e/helper';
1+
import { expect, test } from '@/e2e/helper';
22

33
test.describe('Acceptance | crates page', { tag: '@acceptance' }, () => {
44
// should match the default set in the crates controller
@@ -72,7 +72,7 @@ test.describe('Acceptance | crates page', { tag: '@acceptance' }, () => {
7272

7373
await page.goto('/crates');
7474

75-
await expect(page.locator('[data-test-crates-sort] [data-test-current-order]')).toHaveText('Alphabetical');
75+
await expect(page.locator('[data-test-crates-sort] [data-test-current-order]')).toHaveText('Recent Downloads');
7676
});
7777

7878
test('downloads appears for each crate on crate list', async ({ page, mirage }) => {
@@ -81,7 +81,7 @@ test.describe('Acceptance | crates page', { tag: '@acceptance' }, () => {
8181
});
8282

8383
await page.goto('/crates');
84-
await expect(page.locator('[data-test-crate-row="0"] [data-test-downloads]')).toHaveText('All-Time: 497');
84+
await expect(page.locator('[data-test-crate-row="0"] [data-test-downloads]')).toHaveText('All-Time: 21,573');
8585
});
8686

8787
test('recent downloads appears for each crate on crate list', async ({ page, mirage }) => {
@@ -90,6 +90,6 @@ test.describe('Acceptance | crates page', { tag: '@acceptance' }, () => {
9090
});
9191

9292
await page.goto('/crates');
93-
await expect(page.locator('[data-test-crate-row="0"] [data-test-recent-downloads]')).toHaveText('Recent: 497');
93+
await expect(page.locator('[data-test-crate-row="0"] [data-test-recent-downloads]')).toHaveText('Recent: 2,000');
9494
});
9595
});

mirage/route-handlers/crates.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ export function list(schema, request) {
4444

4545
if (request.queryParams.sort === 'alpha') {
4646
crates = crates.sort((a, b) => compareStrings(a.id.toLowerCase(), b.id.toLowerCase()));
47+
} else if (request.queryParams.sort === 'recent-downloads') {
48+
crates = crates.sort((a, b) => b.recent_downloads - a.recent_downloads);
4749
}
4850

4951
return { ...this.serialize(crates.slice(start, end)), meta: { total: crates.length } };

tests/acceptance/crates-test.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,25 +66,29 @@ module('Acceptance | crates page', function (hooks) {
6666
assert.dom('[data-test-crates-nav] [data-test-total-rows]').hasText(`${total}`);
6767
});
6868

69-
test('crates default sort is alphabetical', async function (assert) {
69+
test('crates default sort is by recent downloads', async function (assert) {
7070
this.server.loadFixtures();
7171

7272
await visit('/crates');
7373

74-
assert.dom('[data-test-crates-sort] [data-test-current-order]').hasText('Alphabetical');
74+
assert.dom('[data-test-crates-sort] [data-test-current-order]').hasText('Recent Downloads');
7575
});
7676

7777
test('downloads appears for each crate on crate list', async function (assert) {
7878
this.server.loadFixtures();
7979

8080
await visit('/crates');
81-
assert.dom('[data-test-crate-row="0"] [data-test-downloads]').hasText('All-Time: 497');
81+
82+
let formatted = Number(21_573).toLocaleString();
83+
assert.dom('[data-test-crate-row="0"] [data-test-downloads]').hasText(`All-Time: ${formatted}`);
8284
});
8385

8486
test('recent downloads appears for each crate on crate list', async function (assert) {
8587
this.server.loadFixtures();
8688

8789
await visit('/crates');
88-
assert.dom('[data-test-crate-row="0"] [data-test-recent-downloads]').hasText('Recent: 497');
90+
91+
let formatted = Number(2000).toLocaleString();
92+
assert.dom('[data-test-crate-row="0"] [data-test-recent-downloads]').hasText(`Recent: ${formatted}`);
8993
});
9094
});

0 commit comments

Comments
 (0)