From bb4f969764b231a36695ed6af7d08a6db6a4c52d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marl=C3=A8ne=20SIMONDANT?= <msimondant@grandlyon.com>
Date: Thu, 2 Feb 2023 15:25:03 +0000
Subject: [PATCH] fix(registry): sort jobs by alphabetical order

---
 src/users/services/jobs.service.spec.ts | 15 ++++++++++-----
 src/users/services/jobs.service.ts      |  4 ++--
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/users/services/jobs.service.spec.ts b/src/users/services/jobs.service.spec.ts
index f6e69f769..0022c1148 100644
--- a/src/users/services/jobs.service.spec.ts
+++ b/src/users/services/jobs.service.spec.ts
@@ -19,7 +19,10 @@ describe('JobsService', () => {
 
   const mockJobModel = {
     create: jest.fn(),
-    find: jest.fn(),
+    find: jest.fn().mockReturnThis(),
+    collation: jest.fn().mockReturnThis(),
+    sort: jest.fn().mockReturnThis(),
+    exec: jest.fn().mockReturnThis(),
     findOne: jest.fn(),
     findById: jest.fn(),
     deleteOne: jest.fn(),
@@ -66,26 +69,28 @@ describe('JobsService', () => {
 
   describe('findAll', () => {
     it('should findAll validated jobs', async () => {
-      mockJobModel.find.mockResolvedValue([
+      const result = [
         {
           _id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
           name: 'CNFS',
           validated: true,
           hasPersonalOffer: true,
         },
-      ]);
+      ];
+      mockJobModel.exec.mockResolvedValueOnce(result);
       const reply = await service.findAll();
       expect(reply.length).toBe(1);
     });
     it('should findAll all jobs', async () => {
-      mockJobModel.find.mockResolvedValue([
+      const result = [
         {
           _id: new Types.ObjectId('6231aefe76598527c8d0b5bc'),
           name: 'CNFSssss',
           validated: false,
           hasPersonalOffer: true,
         },
-      ]);
+      ];
+      mockJobModel.exec.mockResolvedValueOnce(result);
       const reply = await service.findAll(false);
       expect(reply.length).toBe(1);
     });
diff --git a/src/users/services/jobs.service.ts b/src/users/services/jobs.service.ts
index 2ff2ff5a3..03ce9835f 100644
--- a/src/users/services/jobs.service.ts
+++ b/src/users/services/jobs.service.ts
@@ -23,9 +23,9 @@ export class JobsService {
   public async findAll(filterValidatedJobs = true): Promise<IJob[]> {
     this.logger.debug(`findAll with filterValidetedJobs: ${filterValidatedJobs}`);
     if (!filterValidatedJobs) {
-      return this.jobModel.find();
+      return this.jobModel.find().collation({ locale: 'fr' }).sort({ name: 1 }).exec();
     } else {
-      return this.jobModel.find({ validated: true });
+      return this.jobModel.find({ validated: true }).collation({ locale: 'fr' }).sort({ name: 1 }).exec();
     }
   }
 
-- 
GitLab