diff --git a/frontends/main/src/common/certificateUtils.test.ts b/frontends/main/src/common/certificateUtils.test.ts index a0e3d0b0d7..1a358a2db2 100644 --- a/frontends/main/src/common/certificateUtils.test.ts +++ b/frontends/main/src/common/certificateUtils.test.ts @@ -1,9 +1,12 @@ import { + CertificateType, getCertificateBadgeLines, getCertificateBadgeTypography, getCertificateInfo, + getCertificateLinkedInUrl, getCertificateTitle, } from "./certificateUtils" +import { factories } from "api/test-utils" describe("getCertificateInfo", () => { it("returns default certificate label when no program type is provided", () => { @@ -148,3 +151,44 @@ describe("getCertificateBadgeTypography", () => { ) }) }) + +describe("getCertificateLinkedInUrl", () => { + const pageUrl = "https://example.com/certificate/program/abc" + + it("uses the CMS product name for program certificates", () => { + const certificate = factories.mitxonline.programCertificate() + certificate.certificate_page.product_name = "Universal AI" + certificate.program.title = "Fundamentals of Programming and ML" + + const url = new URL( + getCertificateLinkedInUrl(CertificateType.Program, certificate, pageUrl), + ) + + expect(url.searchParams.get("name")).toBe("Universal AI") + }) + + it("falls back to the program title when product name is empty", () => { + const certificate = factories.mitxonline.programCertificate() + certificate.certificate_page.product_name = "" + certificate.program.title = "Fundamentals of Programming and ML" + + const url = new URL( + getCertificateLinkedInUrl(CertificateType.Program, certificate, pageUrl), + ) + + expect(url.searchParams.get("name")).toBe( + "Fundamentals of Programming and ML", + ) + }) + + it("uses the course title for course certificates", () => { + const certificate = factories.mitxonline.courseCertificate() + certificate.course_run.course.title = "Intro to Python" + + const url = new URL( + getCertificateLinkedInUrl(CertificateType.Course, certificate, pageUrl), + ) + + expect(url.searchParams.get("name")).toBe("Intro to Python") + }) +}) diff --git a/frontends/main/src/common/certificateUtils.ts b/frontends/main/src/common/certificateUtils.ts index d40fdacb74..218985f106 100644 --- a/frontends/main/src/common/certificateUtils.ts +++ b/frontends/main/src/common/certificateUtils.ts @@ -253,10 +253,17 @@ export const getCertificateLinkedInUrl = ( certificateData: V2ProgramCertificate | V2CourseRunCertificate, pageUrl: string, ): string => { - const credentialName = - certificateType === CertificateType.Course - ? (certificateData as V2CourseRunCertificate).course_run.course.title - : (certificateData as V2ProgramCertificate).program.title + let credentialName: string + if (certificateType === CertificateType.Course) { + credentialName = (certificateData as V2CourseRunCertificate).course_run + .course.title + } else { + const programCert = certificateData as V2ProgramCertificate + credentialName = getCertificateTitle( + programCert.certificate_page?.product_name, + programCert.program.title, + ) + } const certId = certificateData.uuid const linkedinUrl = new URL(LINKEDIN_ADD_TO_PROFILE_BASE_URL) linkedinUrl.searchParams.set("startTask", "CERTIFICATION_NAME")