Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions frontends/main/src/common/certificateUtils.test.ts
Original file line number Diff line number Diff line change
@@ -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", () => {
Expand Down Expand Up @@ -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()
Comment thread
ahtesham-quraish marked this conversation as resolved.
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")
})
})
15 changes: 11 additions & 4 deletions frontends/main/src/common/certificateUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
Loading