diff --git a/src/helpers/formatName.ts b/src/helpers/formatName.ts index d333f5730..62902ac7d 100644 --- a/src/helpers/formatName.ts +++ b/src/helpers/formatName.ts @@ -1,7 +1,7 @@ export function formatName(name: string) { let splitName = name.replace(/\*|\s+/g, "%") - if (!splitName.endsWith("%")) { + if (!name.includes("%") && !splitName.endsWith("%")) { splitName = `${splitName}%` } diff --git a/test/services/listCourtCases/filterByResolvedByUsername.integration.test.ts b/test/services/listCourtCases/filterByResolvedByUsername.integration.test.ts index 25ac69a59..49dc0b634 100644 --- a/test/services/listCourtCases/filterByResolvedByUsername.integration.test.ts +++ b/test/services/listCourtCases/filterByResolvedByUsername.integration.test.ts @@ -51,28 +51,57 @@ describe("listCourtCases", () => { }) describe("search by resolvedByUsername", () => { - it("Should list cases that have been resolved by a specific user", async () => { + it("Should list cases that match the partial username search", async () => { await insertCourtCasesWithFields([ { errorResolvedBy: "User Name01" }, { triggerResolvedBy: "User Name02" }, { errorResolvedBy: "User Name03" } ]) - let result = await listCourtCases(dataSource, { maxPageItems: 100, resolvedByUsername: "User" }, testUser) + const result = await listCourtCases(dataSource, { maxPageItems: 100, resolvedByUsername: "User" }, testUser) expect(isError(result)).toBe(false) - let { result: cases } = result as ListCourtCaseResult + const { result: cases } = result as ListCourtCaseResult expect(cases).toHaveLength(3) expect(cases[0].errorResolvedBy).toStrictEqual("User Name01") expect(cases[1].triggerResolvedBy).toStrictEqual("User Name02") expect(cases[2].errorResolvedBy).toStrictEqual("User Name03") + }) - result = await listCourtCases(dataSource, { maxPageItems: 100, resolvedByUsername: "User Name01" }, testUser) + it("Should list cases that match the full username search", async () => { + await insertCourtCasesWithFields([ + { errorResolvedBy: "User Name01" }, + { triggerResolvedBy: "User Name02" }, + { errorResolvedBy: "User Name03" } + ]) + + const result = await listCourtCases( + dataSource, + { maxPageItems: 100, resolvedByUsername: "User Name01" }, + testUser + ) expect(isError(result)).toBe(false) - cases = (result as ListCourtCaseResult).result + const { result: cases } = result as ListCourtCaseResult expect(cases).toHaveLength(1) expect(cases[0].errorResolvedBy).toStrictEqual("User Name01") }) + + it("Should handle wildcard searches for partial usernames", async () => { + await insertCourtCasesWithFields([ + { errorResolvedBy: "User Name01" }, + { triggerResolvedBy: "User Name02" }, + { errorResolvedBy: "User Name03" } + ]) + + const result = await listCourtCases(dataSource, { maxPageItems: 100, resolvedByUsername: "Name0%" }, testUser) + expect(isError(result)).toBe(false) + const { result: cases } = result as ListCourtCaseResult + + expect(cases).toHaveLength(3) + expect(cases[0].errorResolvedBy).toStrictEqual("User Name01") + expect(cases[1].triggerResolvedBy).toStrictEqual("User Name02") + expect(cases[2].errorResolvedBy).toStrictEqual("User Name03") + }) }) }) diff --git a/test/services/listCourtCases/formatName.test.ts b/test/services/listCourtCases/formatName.test.ts index fb78a903b..0c41f51b2 100644 --- a/test/services/listCourtCases/formatName.test.ts +++ b/test/services/listCourtCases/formatName.test.ts @@ -20,4 +20,14 @@ describe("formatName", () => { it("should handle empty string", () => { expect(formatName("")).toBe("%") }) + + it("should handle a wildcard character anywhere in the string", () => { + expect(formatName("Name0%")).toBe("Name0%") + expect(formatName("User%Name")).toBe("User%Name") + expect(formatName("%Name")).toBe("%Name") + }) + + it('should still replace spaces and append "%" at the end if no wildcard is present', () => { + expect(formatName("Name 0")).toBe("Name%0%") + }) })