Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,46 @@ describe("HomeEnrollmentsDisplay", () => {
})
})

test("Renders one card per enrollment when a single course has multiple enrollments", async () => {
const mitxOnlineUser = mitxonline.factories.user.user()
setMockResponse.get(mitxonline.urls.userMe.get(), mitxOnlineUser)

const sharedCourseId = faker.number.int()
const enrollmentA = mitxonline.factories.enrollment.courseEnrollment({
run: {
title: "Same Course — Run A",
course: { id: sharedCourseId },
},
})
const enrollmentB = mitxonline.factories.enrollment.courseEnrollment({
run: {
title: "Same Course — Run B",
course: { id: sharedCourseId },
},
})

setMockResponse.get(mitxonline.urls.enrollment.enrollmentsListV3(), [
enrollmentA,
enrollmentB,
])
setMockResponse.get(
mitxonline.urls.programEnrollments.enrollmentsListV3(),
[],
)

renderWithProviders(<HomeEnrollmentsDisplay />)

await screen.findByRole("heading", { name: "My Learning" })
const cards = await screen.findAllByTestId("enrollment-card-desktop")
expect(cards).toHaveLength(2)
expect(
cards.find((c) => c.textContent?.includes("Same Course — Run A")),
).toBeDefined()
expect(
cards.find((c) => c.textContent?.includes("Same Course — Run B")),
).toBeDefined()
})

test("Renders the proper amount of unenroll and email settings buttons in the context menus", async () => {
const { enrollments } = setupApis()
renderWithProviders(<HomeEnrollmentsDisplay />)
Expand Down Expand Up @@ -779,6 +819,47 @@ describe("HomeEnrollmentsDisplay", () => {
expect(screen.queryByText(b2bSimpleProgram.title)).not.toBeInTheDocument()
})

test("Filters B2B course enrollments from display", async () => {
const mitxOnlineUser = mitxonline.factories.user.user()
setMockResponse.get(mitxonline.urls.userMe.get(), mitxOnlineUser)

mockedUseFeatureFlagEnabled.mockReturnValue(true)

const b2bEnrollment = mitxonline.factories.enrollment.courseEnrollment({
b2b_contract_id: 42,
run: {
title: "B2B Hidden Course",
course: { title: "B2B Hidden Course" },
},
})
const nonB2BEnrollment = mitxonline.factories.enrollment.courseEnrollment({
b2b_contract_id: null,
run: {
title: "Personal Visible Course",
course: { title: "Personal Visible Course" },
},
})

setMockResponse.get(mitxonline.urls.enrollment.enrollmentsListV3(), [
b2bEnrollment,
nonB2BEnrollment,
])
setMockResponse.get(
mitxonline.urls.programEnrollments.enrollmentsListV3(),
[],
)

renderWithProviders(<HomeEnrollmentsDisplay />)

await screen.findByRole("heading", { name: "My Learning" })

const personalCourseCards = await screen.findAllByText(
nonB2BEnrollment.run.title,
)
expect(personalCourseCards.length).toBeGreaterThan(0)
expect(screen.queryByText(b2bEnrollment.run.title)).not.toBeInTheDocument()
})

test("Hides child program enrollments that are part of an enrolled parent program", async () => {
const mitxOnlineUser = mitxonline.factories.user.user()
setMockResponse.get(mitxonline.urls.userMe.get(), mitxOnlineUser)
Expand Down
Loading
Loading