Skip to content

Commit ea949a0

Browse files
committed
Merges #511 Closes #511 Fixes #513
2 parents 47c417f + 8cd6375 commit ea949a0

File tree

6 files changed

+72
-12
lines changed

6 files changed

+72
-12
lines changed

sortinghat/core/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class Individual(EntityBase):
176176

177177
class Meta:
178178
db_table = 'individuals'
179-
ordering = ('last_modified',)
179+
ordering = ('last_modified', 'created_at',)
180180

181181
def __str__(self):
182182
return self.mk

tests/test_schema.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2491,6 +2491,53 @@ def test_order_by_last_modified(self):
24912491
indv = individuals[2]
24922492
self.assertEqual(indv['mk'], indv1.mk)
24932493

2494+
def test_order_by_created_at(self):
2495+
"""Check whether it returns the individuals ordered by their creation date"""
2496+
2497+
indv1 = Individual.objects.create(mk='a9b403e150dd4af8953a52a4bb841051e4b705d9')
2498+
indv2 = Individual.objects.create(mk='185c4b709e5446d250b4fde0e34b78a2b4fde0e3')
2499+
indv3 = Individual.objects.create(mk='c6d2504fde0e34b78a185c4b709e5442d045451c')
2500+
2501+
# Test default order by mk
2502+
client = graphene.test.Client(schema)
2503+
executed = client.execute(SH_INDIVIDUALS_ORDER_BY % 'mk',
2504+
context_value=self.context_value)
2505+
2506+
individuals = executed['data']['individuals']['entities']
2507+
2508+
indv = individuals[0]
2509+
self.assertEqual(indv['mk'], indv2.mk)
2510+
indv = individuals[1]
2511+
self.assertEqual(indv['mk'], indv1.mk)
2512+
indv = individuals[2]
2513+
self.assertEqual(indv['mk'], indv3.mk)
2514+
2515+
# Test ascending order
2516+
executed = client.execute(SH_INDIVIDUALS_ORDER_BY % 'createdAt',
2517+
context_value=self.context_value)
2518+
2519+
individuals = executed['data']['individuals']['entities']
2520+
2521+
indv = individuals[0]
2522+
self.assertEqual(indv['mk'], indv1.mk)
2523+
indv = individuals[1]
2524+
self.assertEqual(indv['mk'], indv2.mk)
2525+
indv = individuals[2]
2526+
self.assertEqual(indv['mk'], indv3.mk)
2527+
2528+
# Test descending order
2529+
executed = client.execute(SH_INDIVIDUALS_ORDER_BY % '-createdAt',
2530+
context_value=self.context_value)
2531+
2532+
individuals = executed['data']['individuals']['entities']
2533+
2534+
indv = individuals[0]
2535+
self.assertEqual(indv['mk'], indv3.mk)
2536+
indv = individuals[1]
2537+
self.assertEqual(indv['mk'], indv2.mk)
2538+
indv = individuals[2]
2539+
self.assertEqual(indv['mk'], indv1.mk)
2540+
24942541
def test_pagination(self):
24952542
"""Check whether it returns the individuals searched when using pagination"""
24962543

ui/src/components/IndividualsTable.vue

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@
3636
@search="filterSearch"
3737
filter-selector
3838
order-selector
39+
:order-options="[
40+
{
41+
text: 'Last updated',
42+
value: 'lastModified'
43+
},
44+
{
45+
text: 'Created date',
46+
value: 'createdAt'
47+
}
48+
]"
3949
/>
4050
<v-tooltip bottom transition="expand-y-transition" open-delay="200">
4151
<template v-slot:activator="{ on }">

ui/tests/unit/__snapshots__/mutations.spec.js.snap

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ exports[`IndividualsTable Mock query for deleteIdentity 1`] = `
8585
<search-stub
8686
class="ml-auto pa-0 flex-grow-0"
8787
filterselector="true"
88-
orderoptions="[object Object]"
88+
orderoptions="[object Object],[object Object]"
8989
orderselector="true"
9090
validfilters="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
9191
/>
@@ -447,7 +447,7 @@ exports[`IndividualsTable Mock query for merge 1`] = `
447447
<search-stub
448448
class="ml-auto pa-0 flex-grow-0"
449449
filterselector="true"
450-
orderoptions="[object Object]"
450+
orderoptions="[object Object],[object Object]"
451451
orderselector="true"
452452
validfilters="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
453453
/>
@@ -809,7 +809,7 @@ exports[`IndividualsTable Mock query for moveIdentity 1`] = `
809809
<search-stub
810810
class="ml-auto pa-0 flex-grow-0"
811811
filterselector="true"
812-
orderoptions="[object Object]"
812+
orderoptions="[object Object],[object Object]"
813813
orderselector="true"
814814
validfilters="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
815815
/>
@@ -1171,7 +1171,7 @@ exports[`IndividualsTable Mock query for unmerge 1`] = `
11711171
<search-stub
11721172
class="ml-auto pa-0 flex-grow-0"
11731173
filterselector="true"
1174-
orderoptions="[object Object]"
1174+
orderoptions="[object Object],[object Object]"
11751175
orderselector="true"
11761176
validfilters="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
11771177
/>
@@ -1533,7 +1533,7 @@ exports[`IndividualsTable Mock query for updateEnrollment 1`] = `
15331533
<search-stub
15341534
class="ml-auto pa-0 flex-grow-0"
15351535
filterselector="true"
1536-
orderoptions="[object Object]"
1536+
orderoptions="[object Object],[object Object]"
15371537
orderselector="true"
15381538
validfilters="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
15391539
/>
@@ -1895,7 +1895,7 @@ exports[`IndividualsTable Mock query for withdraw 1`] = `
18951895
<search-stub
18961896
class="ml-auto pa-0 flex-grow-0"
18971897
filterselector="true"
1898-
orderoptions="[object Object]"
1898+
orderoptions="[object Object],[object Object]"
18991899
orderselector="true"
19001900
validfilters="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
19011901
/>

ui/tests/unit/__snapshots__/queries.spec.js.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ exports[`IndividualsTable Mock query for getCountries 1`] = `
9292
<search-stub
9393
class="ml-auto pa-0 flex-grow-0"
9494
filterselector="true"
95-
orderoptions="[object Object]"
95+
orderoptions="[object Object],[object Object]"
9696
orderselector="true"
9797
validfilters="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
9898
/>
@@ -456,7 +456,7 @@ exports[`IndividualsTable Mock query for getPaginatedIndividuals 1`] = `
456456
<search-stub
457457
class="ml-auto pa-0 flex-grow-0"
458458
filterselector="true"
459-
orderoptions="[object Object]"
459+
orderoptions="[object Object],[object Object]"
460460
orderselector="true"
461461
validfilters="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
462462
/>

ui/tests/unit/queries.spec.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,10 @@ describe("IndividualsTable", () => {
378378
expect(querySpy).toHaveBeenCalledWith(1, 10, { country: "Spain" }, null);
379379
});
380380

381-
test("Orders query by last modified date", async () => {
381+
test.each([
382+
"lastModified",
383+
"createdAt"
384+
])("Orders query by %p", async (value) => {
382385
const querySpy = spyOn(Queries, "getPaginatedIndividuals");
383386
const query = jest.fn(() => Promise.resolve(paginatedResponse));
384387
const wrapper = mountFunction({
@@ -389,11 +392,11 @@ describe("IndividualsTable", () => {
389392
}
390393
});
391394
await wrapper.setProps({ fetchPage: Queries.getPaginatedIndividuals });
392-
await wrapper.setData({ orderBy: "lastModified" });
395+
await wrapper.setData({ orderBy: value });
393396

394397
const response = await wrapper.vm.queryIndividuals(1);
395398

396-
expect(querySpy).toHaveBeenCalledWith(1, 10, {}, "lastModified");
399+
expect(querySpy).toHaveBeenCalledWith(1, 10, {}, value);
397400
});
398401

399402
test("Mock query for getCountries", async () => {

0 commit comments

Comments
 (0)