From 1db57ec60c110b37b16be3e17317a7f6ef8b69ab Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Fri, 14 Aug 2026 14:54:55 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=BA=D0=B0=20=D0=BF=D0=BE=D0=B4=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/portalDictionary.test.ts | 56 ------------------- 1 file changed, 56 deletions(-) delete mode 100644 frontend/src/webparts/approvalAdmin/services/portalDictionary.test.ts diff --git a/frontend/src/webparts/approvalAdmin/services/portalDictionary.test.ts b/frontend/src/webparts/approvalAdmin/services/portalDictionary.test.ts deleted file mode 100644 index e83adb1..0000000 --- a/frontend/src/webparts/approvalAdmin/services/portalDictionary.test.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { AadHttpClient } from '@microsoft/sp-http'; -import { PortalDictionaryClient } from './portalDictionary'; - -// Мок-клиент вместо настоящего AadHttpClient — employees() дёргает только .get(). -function clientReturning(body: unknown): AadHttpClient { - return { - get: () => - Promise.resolve({ - ok: true, - text: () => Promise.resolve(JSON.stringify(body)) - }) - } as unknown as AadHttpClient; -} - -describe('PortalDictionaryClient.employees', () => { - // Регрессия: api.tnsu.kz отдаёт ОТДЕЛЬНУЮ строку на каждую компанию, где - // числится сотрудник (совместители/бухгалтерия на несколько юрлиц — не - // редкость). Раньше company у дедуплицированной записи оставалась только - // первой попавшейся, а остальные компании терялись — сотрудник ошибочно - // выглядел отсутствующим в них (см. forms/Clearance-подсказку в RouteStepFormModal). - it('строки одного email по разным компаниям схлопываются в одного сотрудника, но все компании сохраняются', async () => { - const client = clientReturning([ - { fio: 'Тәжіғалиев Биғали', email: 'b@ct-global.kz', position: 'Главный бухгалтер', company: 'ТОО ГеоТрек' }, - { fio: 'Тәжіғалиев Биғали', email: 'b@ct-global.kz', position: 'Главный бухгалтер', company: 'ТОО AFL Engineering' }, - { fio: 'Тәжіғалиев Биғали', email: 'b@ct-global.kz', position: 'Главный бухгалтер', company: 'ТОО СТ Global' } - ]); - - const employees = await new PortalDictionaryClient(client, 'https://api.tnsu.kz').employees(); - - expect(employees).toHaveLength(1); - expect(employees[0].company).toBe('ТОО ГеоТрек'); // первая — для пикера/отображения - expect(employees[0].companies).toEqual(['ТОО ГеоТрек', 'ТОО AFL Engineering', 'ТОО СТ Global']); - }); - - it('разные email — разные сотрудники, дедупликация их не задевает', async () => { - const client = clientReturning([ - { fio: 'A', email: 'a@tnsu.kz', position: 'Инженер', company: 'Компания А' }, - { fio: 'B', email: 'b@tnsu.kz', position: 'Инженер', company: 'Компания Б' } - ]); - - const employees = await new PortalDictionaryClient(client, 'https://api.tnsu.kz').employees(); - - expect(employees.map(e => e.email)).toEqual(['a@tnsu.kz', 'b@tnsu.kz']); - expect(employees.map(e => e.companies)).toEqual([['Компания А'], ['Компания Б']]); - }); - - it('сотрудник без email в строке — пропускается (по нему нельзя резолвить исполнителя)', async () => { - const client = clientReturning([ - { fio: 'Без Email', email: null, position: 'Инженер', company: 'Компания А' } - ]); - - const employees = await new PortalDictionaryClient(client, 'https://api.tnsu.kz').employees(); - - expect(employees).toEqual([]); - }); -});