1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62'use strict';
const test = require('tape');
const mockRepositoriesData = require('./fixtures/mockRepositoriesData.json');
const getRepositories = () => mockRepositoriesData.data.viewer.repositories.nodes;
const { sortRepositories } = require('../src/getRepositories');
/** @return {ReturnType<typeof getRepositories>} */
function cloneData() {
return JSON.parse(JSON.stringify(getRepositories()));
}
test('Sort by name ASC', (t) => {
const repos = cloneData();
const actual = sortRepositories(repos, { sort: 'name', desc: false });
const expected = cloneData().toSorted((a, b) => a.name.localeCompare(b.name));
t.deepEqual(actual, expected, 'Repos are sorted by name A โ Z');
t.end();
});
test('Sort by name DESC', (t) => {
const repos = cloneData();
const actual = sortRepositories(repos, { sort: 'name', desc: true });
const expected = cloneData().toSorted((a, b) => b.name.localeCompare(a.name));
t.deepEqual(actual, expected, 'Repos are sorted by name Z โ A');
t.end();
});
test('Sort by updated date DESC (default)', (t) => {
const repos = cloneData();
const actual = sortRepositories(repos, { sort: 'updated', desc: false });
const expected = cloneData().toSorted((a, b) => new Date(b.updatedAt) - new Date(a.updatedAt));
t.deepEqual(actual, expected, 'Repos are sorted by updated newest โ oldest');
t.end();
});
test('Sort by updated date ASC', (t) => {
const repos = cloneData();
const actual = sortRepositories(repos, { sort: 'updated', desc: true });
const expected = cloneData().toSorted((a, b) => new Date(a.updatedAt) - new Date(b.updatedAt));
t.deepEqual(actual, expected, 'Repos are sorted by updated oldest โ newest');
t.end();
});
test('Sort by created date DESC', (t) => {
const repos = cloneData();
const actual = sortRepositories(repos, { sort: 'created', desc: false });
const expected = cloneData().toSorted((a, b) => new Date(b.createdAt) - new Date(a.createdAt));
t.deepEqual(actual, expected, 'Repos are sorted by created date newest โ oldest');
t.end();
});
test('Sort by created date ASC', (t) => {
const repos = cloneData();
const actual = sortRepositories(repos, { sort: 'created', desc: true });
const expected = cloneData().toSorted((a, b) => new Date(a.createdAt) - new Date(b.createdAt));
t.deepEqual(actual, expected, 'Repos are sorted by created date oldest โ newest');
t.end();
});