Skip to content

Commit 54a0a10

Browse files
committed
Update sorting function to account for ownerName, if provided
1 parent a670732 commit 54a0a10

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { it, expect } from 'vitest';
2+
import { orderTasksByOwnerThenByNameThenByVersion } from '$lib/common/component_utilities.js';
3+
4+
it('should order tasks by owner, then by name, then by version', () => {
5+
const tasks = [
6+
{ name: 'task1', owner: 'owner1', version: '0.0.1' },
7+
{ name: 'task2', owner: 'owner1', version: '0.0.1' },
8+
{ name: 'task3', owner: 'owner1', version: '0.0.2' },
9+
{ name: 'task4', owner: 'owner2', version: '0.0.1' },
10+
{ name: 'task5', owner: 'owner2', version: '0.0.2' },
11+
{ name: 'task6', owner: 'owner2', version: '0.0.2' },
12+
{ name: 'task7', owner: 'owner3', version: '0.0.1' },
13+
{ name: 'task8', owner: 'owner3', version: '0.0.2' },
14+
{ name: 'task9', owner: 'owner3', version: '0.0.2' }
15+
];
16+
17+
const sortedTasks = orderTasksByOwnerThenByNameThenByVersion(tasks);
18+
19+
expect(sortedTasks).toEqual([
20+
{ name: 'task1', owner: 'owner1', version: '0.0.1' },
21+
{ name: 'task2', owner: 'owner1', version: '0.0.1' },
22+
{ name: 'task3', owner: 'owner1', version: '0.0.2' },
23+
{ name: 'task4', owner: 'owner2', version: '0.0.1' },
24+
{ name: 'task5', owner: 'owner2', version: '0.0.2' },
25+
{ name: 'task6', owner: 'owner2', version: '0.0.2' },
26+
{ name: 'task7', owner: 'owner3', version: '0.0.1' },
27+
{ name: 'task8', owner: 'owner3', version: '0.0.2' },
28+
{ name: 'task9', owner: 'owner3', version: '0.0.2' }
29+
]);
30+
31+
const sortedTasks2 = orderTasksByOwnerThenByNameThenByVersion(tasks, 'owner2');
32+
33+
expect(sortedTasks2).toEqual([
34+
{ name: 'task4', owner: 'owner2', version: '0.0.1' },
35+
{ name: 'task5', owner: 'owner2', version: '0.0.2' },
36+
{ name: 'task6', owner: 'owner2', version: '0.0.2' },
37+
{ name: 'task1', owner: 'owner1', version: '0.0.1' },
38+
{ name: 'task2', owner: 'owner1', version: '0.0.1' },
39+
{ name: 'task3', owner: 'owner1', version: '0.0.2' },
40+
{ name: 'task7', owner: 'owner3', version: '0.0.1' },
41+
{ name: 'task8', owner: 'owner3', version: '0.0.2' },
42+
{ name: 'task9', owner: 'owner3', version: '0.0.2' }
43+
]);
44+
});

src/lib/common/component_utilities.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,21 @@ function compareTaskNameAndVersion(t1, t2) {
3939
return greatestVersionAsc(t1, t2);
4040
}
4141

42-
export function orderTasksByOwnerThenByNameThenByVersion(tasks) {
42+
export function orderTasksByOwnerThenByNameThenByVersion(tasks, ownerName = null) {
4343
// Sort tasks by owner, by name and by version
4444
return tasks.sort((t1, t2) => {
45+
// If ownerName is not null, filter tasks by owner
46+
if (ownerName !== null) {
47+
// If t1 owner is same as ownerName, t1 should go before t2
48+
if (t1.owner === ownerName) {
49+
if (t2.owner !== ownerName) return -1;
50+
// Both owners are same, sort by name and version
51+
return compareTaskNameAndVersion(t1, t2);
52+
} else {
53+
// t1 owner is not same as ownerName, t2 should go before t1
54+
if (t2.owner === ownerName) return 1;
55+
}
56+
}
4557
if (t1.owner === null) {
4658
// If t1 owner is null, t1 should go before t2 if t2 owner is null
4759
// Should check if t2 owner is null too

0 commit comments

Comments
 (0)