From 2d9ecad61f098c48f1e67e7ba5e38abe716d47c0 Mon Sep 17 00:00:00 2001 From: Suliman Date: Tue, 9 Jun 2026 19:45:31 +0000 Subject: [PATCH 1/4] test(vue): add unit tests for getDisplayName utility --- .../__tests__/utils/getDisplayName.test.ts | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 packages/vue/src/__tests__/utils/getDisplayName.test.ts diff --git a/packages/vue/src/__tests__/utils/getDisplayName.test.ts b/packages/vue/src/__tests__/utils/getDisplayName.test.ts new file mode 100644 index 000000000..860f7f28e --- /dev/null +++ b/packages/vue/src/__tests__/utils/getDisplayName.test.ts @@ -0,0 +1,62 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import getDisplayName from '../../utils/getDisplayName'; + +vi.mock('../../utils/getMappedUserProfileValue', () => ({ + default: vi.fn(), +})); + +import getMappedUserProfileValue from '../../utils/getMappedUserProfileValue'; + +const mockGet = getMappedUserProfileValue as ReturnType; + +describe('getDisplayName', () => { + const mergedMappings = {}; + const user = {} as any; + + beforeEach(() => { + mockGet.mockReset(); + }); + + it('returns User when nothing is found', () => { + mockGet.mockReturnValue(undefined); + const result = getDisplayName(mergedMappings, user); + expect(result).toBe('User'); + }); + + it('returns firstName and lastName combined', () => { + mockGet.mockReturnValueOnce('Jane'); + mockGet.mockReturnValueOnce('Doe'); + const result = getDisplayName(mergedMappings, user); + expect(result).toBe('Jane Doe'); + }); + + it('returns username when no firstName or lastName', () => { + mockGet.mockReturnValueOnce(undefined); + mockGet.mockReturnValueOnce(undefined); + mockGet.mockReturnValueOnce('janedoe'); + const result = getDisplayName(mergedMappings, user); + expect(result).toBe('janedoe'); + }); + + it('returns email when no firstName lastName or username', () => { + mockGet.mockReturnValueOnce(undefined); + mockGet.mockReturnValueOnce(undefined); + mockGet.mockReturnValueOnce(undefined); + mockGet.mockReturnValueOnce('jane@example.com'); + const result = getDisplayName(mergedMappings, user); + expect(result).toBe('jane@example.com'); + }); + + it('returns value from displayAttributes when found', () => { + mockGet.mockReturnValueOnce('John'); + const result = getDisplayName(mergedMappings, user, ['firstName']); + expect(result).toBe('John'); + }); + + it('skips empty displayAttributes and uses firstName and lastName', () => { + mockGet.mockReturnValueOnce('Jane'); + mockGet.mockReturnValueOnce('Doe'); + const result = getDisplayName(mergedMappings, user, []); + expect(result).toBe('Jane Doe'); + }); +}); \ No newline at end of file From 6b663e9ffcfdd24cd06253ac18212c16b5bd25cb Mon Sep 17 00:00:00 2001 From: salabili212 Date: Tue, 23 Jun 2026 14:22:21 -0400 Subject: [PATCH 2/4] test(vue): add name fallback coverage for getDisplayName --- package.json | 3 ++- packages/vue/src/__tests__/utils/getDisplayName.test.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index cde0d6c7b..116458639 100644 --- a/package.json +++ b/package.json @@ -52,5 +52,6 @@ }, "publishConfig": { "access": "restricted" - } + }, + "packageManager": "pnpm@11.5.2+sha512.71c631e382066efc25625d5cf029075de07b61b37f6e27350fbd84b1bda5864c8c1967adc280776b45c30a715c0359a3be08fef42d5bb09e2b99029979692916" } diff --git a/packages/vue/src/__tests__/utils/getDisplayName.test.ts b/packages/vue/src/__tests__/utils/getDisplayName.test.ts index 860f7f28e..46ebaa3f9 100644 --- a/packages/vue/src/__tests__/utils/getDisplayName.test.ts +++ b/packages/vue/src/__tests__/utils/getDisplayName.test.ts @@ -52,6 +52,15 @@ describe('getDisplayName', () => { const result = getDisplayName(mergedMappings, user, ['firstName']); expect(result).toBe('John'); }); + it('returns name when firstName, lastName, username, and email are missing', () => { + mockGet.mockReturnValueOnce(undefined); // firstName + mockGet.mockReturnValueOnce(undefined); // lastName + mockGet.mockReturnValueOnce(undefined); // username + mockGet.mockReturnValueOnce(undefined); // email + mockGet.mockReturnValueOnce('Jane Fullname'); // name + const result = getDisplayName(mergedMappings, user); + expect(result).toBe('Jane Fullname'); + }); it('skips empty displayAttributes and uses firstName and lastName', () => { mockGet.mockReturnValueOnce('Jane'); From 9749b930076ffbddb8546b8d9b7e27b776e150ea Mon Sep 17 00:00:00 2001 From: salabili212 Date: Tue, 23 Jun 2026 14:25:58 -0400 Subject: [PATCH 3/4] chore: revert unintended package.json change --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 116458639..cde0d6c7b 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,5 @@ }, "publishConfig": { "access": "restricted" - }, - "packageManager": "pnpm@11.5.2+sha512.71c631e382066efc25625d5cf029075de07b61b37f6e27350fbd84b1bda5864c8c1967adc280776b45c30a715c0359a3be08fef42d5bb09e2b99029979692916" + } } From 26cfe1e158149a8c628b26ea070a2da636d0c291 Mon Sep 17 00:00:00 2001 From: salabili212 Date: Tue, 30 Jun 2026 15:51:38 -0400 Subject: [PATCH 4/4] test(vue): add missing name fallback test case --- package.json | 3 ++- .../vue/src/__tests__/utils/getDisplayName.test.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index cde0d6c7b..116458639 100644 --- a/package.json +++ b/package.json @@ -52,5 +52,6 @@ }, "publishConfig": { "access": "restricted" - } + }, + "packageManager": "pnpm@11.5.2+sha512.71c631e382066efc25625d5cf029075de07b61b37f6e27350fbd84b1bda5864c8c1967adc280776b45c30a715c0359a3be08fef42d5bb09e2b99029979692916" } diff --git a/packages/vue/src/__tests__/utils/getDisplayName.test.ts b/packages/vue/src/__tests__/utils/getDisplayName.test.ts index 46ebaa3f9..0c9bdaac5 100644 --- a/packages/vue/src/__tests__/utils/getDisplayName.test.ts +++ b/packages/vue/src/__tests__/utils/getDisplayName.test.ts @@ -68,4 +68,14 @@ describe('getDisplayName', () => { const result = getDisplayName(mergedMappings, user, []); expect(result).toBe('Jane Doe'); }); + + it('returns name when firstName, lastName, username, and email are missing', () => { + mockGet.mockReturnValueOnce(undefined); // firstName + mockGet.mockReturnValueOnce(undefined); // lastName + mockGet.mockReturnValueOnce(undefined); // username + mockGet.mockReturnValueOnce(undefined); // email + mockGet.mockReturnValueOnce('Jane Fullname'); // name + const result = getDisplayName(mergedMappings, user); + expect(result).toBe('Jane Fullname'); + }); }); \ No newline at end of file