From 6929dc081a7b8971f24184d757b53868482fb615 Mon Sep 17 00:00:00 2001 From: mshet-sonata-pixel Date: Fri, 27 Mar 2026 15:55:49 +0000 Subject: [PATCH] feat: Created the plugin slot for UpgradeToCompleteAlert --- src/course-home/dates-tab/DatesTab.jsx | 4 +- src/course-home/dates-tab/DatesTab.test.jsx | 34 ++-------- .../BannerDatesUpgradeSlot/README.md | 59 ++++++++++++++++++ .../images/update_banner_complete_alert.png | Bin 0 -> 59283 bytes .../BannerDatesUpgradeSlot/index.tsx | 24 +++++++ src/plugin-slots/README.md | 1 + 6 files changed, 90 insertions(+), 32 deletions(-) create mode 100644 src/plugin-slots/BannerDatesUpgradeSlot/README.md create mode 100644 src/plugin-slots/BannerDatesUpgradeSlot/images/update_banner_complete_alert.png create mode 100644 src/plugin-slots/BannerDatesUpgradeSlot/index.tsx diff --git a/src/course-home/dates-tab/DatesTab.jsx b/src/course-home/dates-tab/DatesTab.jsx index 65fed3dfdd..c7d3fcbe55 100644 --- a/src/course-home/dates-tab/DatesTab.jsx +++ b/src/course-home/dates-tab/DatesTab.jsx @@ -11,7 +11,7 @@ import { useModel } from '../../generic/model-store'; import SuggestedScheduleHeader from '../suggested-schedule-messaging/SuggestedScheduleHeader'; import ShiftDatesAlert from '../suggested-schedule-messaging/ShiftDatesAlert'; -import UpgradeToCompleteAlert from '../suggested-schedule-messaging/UpgradeToCompleteAlert'; +import { BannerDatesUpgradeSlot } from '../../plugin-slots/BannerDatesUpgradeSlot'; import UpgradeToShiftDatesAlert from '../suggested-schedule-messaging/UpgradeToShiftDatesAlert'; const DatesTab = () => { @@ -51,7 +51,7 @@ const DatesTab = () => { <> - + )} diff --git a/src/course-home/dates-tab/DatesTab.test.jsx b/src/course-home/dates-tab/DatesTab.test.jsx index 17dcd34ad4..d56c4c0d10 100644 --- a/src/course-home/dates-tab/DatesTab.test.jsx +++ b/src/course-home/dates-tab/DatesTab.test.jsx @@ -171,9 +171,9 @@ describe('DatesTab', () => { await waitFor(() => expect(screen.getByText('We’ve built a suggested schedule to help you stay on track. But don’t worry—it’s flexible so you can learn at your own pace.')).toBeInTheDocument()); }); - it('renders UpgradeToCompleteAlert', async () => { + it('does not render UpgradeToCompleteAlert when contentTypeGatingEnabled is false', async () => { datesTabData.datesBannerInfo = { - contentTypeGatingEnabled: true, + contentTypeGatingEnabled: false, missedDeadlines: false, missedGatedContent: false, verifiedUpgradeLink: 'http://localhost:18130/basket/add/?sku=8CF08E5', @@ -182,8 +182,8 @@ describe('DatesTab', () => { axiosMock.onGet(datesUrl).reply(200, datesTabData); render(component); - await waitFor(() => expect(screen.getByText('You are auditing this course, which means that you are unable to participate in graded assignments. To complete graded assignments as part of this course, you can upgrade today.')).toBeInTheDocument()); - expect(screen.getByRole('button', { name: 'Upgrade now' })).toBeInTheDocument(); + expect(screen.queryByText('You are auditing this course, which means that you are unable to participate in graded assignments. To complete graded assignments as part of this course, you can upgrade today.')).not.toBeInTheDocument(); + expect(screen.queryByRole('button', { name: 'Upgrade now' })).not.toBeInTheDocument(); }); it('renders UpgradeToShiftDatesAlert', async () => { @@ -254,32 +254,6 @@ describe('DatesTab', () => { expect(screen.queryByRole('button', { name: 'Shift due dates' })).not.toBeInTheDocument(); }); - it('sends analytics event onClick of upgrade button in UpgradeToCompleteAlert', async () => { - sendTrackEvent.mockClear(); - datesTabData.datesBannerInfo = { - contentTypeGatingEnabled: true, - missedDeadlines: false, - missedGatedContent: false, - verifiedUpgradeLink: 'http://localhost:18130/basket/add/?sku=8CF08E5', - }; - - axiosMock.onGet(datesUrl).reply(200, datesTabData); - render(component); - - const upgradeButton = await waitFor(() => screen.getByRole('button', { name: 'Upgrade now' })); - fireEvent.click(upgradeButton); - - expect(sendTrackEvent).toHaveBeenCalledTimes(1); - expect(sendTrackEvent).toHaveBeenCalledWith('edx.bi.ecommerce.upsell_links_clicked', { - org_key: 'edX', - courserun_key: courseId, - linkCategory: 'personalized_learner_schedules', - linkName: 'dates_upgrade', - linkType: 'button', - pageName: 'dates_tab', - }); - }); - it('sends analytics event onClick of upgrade button in UpgradeToShiftDatesAlert', async () => { sendTrackEvent.mockClear(); datesTabData.datesBannerInfo = { diff --git a/src/plugin-slots/BannerDatesUpgradeSlot/README.md b/src/plugin-slots/BannerDatesUpgradeSlot/README.md new file mode 100644 index 0000000000..75e553ac59 --- /dev/null +++ b/src/plugin-slots/BannerDatesUpgradeSlot/README.md @@ -0,0 +1,59 @@ +# Banner Dates Upgrade Slot + +### Slot ID: `org.openedx.frontend.learning.banner_dates_upgrade.v1` + +## Description + +This slot is used for rendering upgrade messaging in the dates tab banner area. + +By default, the slot renders `UpgradeToCompleteAlert`. You can disable the default and fully replace it with a custom plugin experience using `keepDefault: false`. + +## Props + +- `courseId` - The course ID (string) +- `logUpgradeLinkClick` - Callback used for upgrade-click analytics + +## Screenshots + +Default banner screenshot: + +![Screenshot of the dates upgrade banner](./images/update_banner_complete_alert.png) + + + +## Example + +The following `env.config.jsx` example replaces the default banner experience with a custom plugin widget: + +```js +import { + DIRECT_PLUGIN, + PLUGIN_OPERATIONS, +} from '@openedx/frontend-plugin-framework'; + +const config = { + pluginSlots: { + 'org.openedx.frontend.learning.banner_dates_upgrade.v1': { + keepDefault: false, + plugins: [ + { + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'org.openedx.frontend.learning.custom_banner_dates_upgrade_widget.v1', + type: DIRECT_PLUGIN, + priority: 50, + RenderWidget: (pluginProps) => ( +
+ Replacement Banner + +
+ ), + }, + }, + ], + }, + }, +}; + +export default config; +``` diff --git a/src/plugin-slots/BannerDatesUpgradeSlot/images/update_banner_complete_alert.png b/src/plugin-slots/BannerDatesUpgradeSlot/images/update_banner_complete_alert.png new file mode 100644 index 0000000000000000000000000000000000000000..870ecc9132a5f589fa21281d61bd13d219d1c01e GIT binary patch literal 59283 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/BannerDatesUpgradeSlot/index.tsx b/src/plugin-slots/BannerDatesUpgradeSlot/index.tsx new file mode 100644 index 0000000000..43ac9724ef --- /dev/null +++ b/src/plugin-slots/BannerDatesUpgradeSlot/index.tsx @@ -0,0 +1,24 @@ +import React from 'react'; + +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import UpgradeToCompleteAlert from '../../course-home/suggested-schedule-messaging/UpgradeToCompleteAlert'; + +export const BannerDatesUpgradeSlot = ({ + courseId, + logUpgradeLinkClick, +}: BannerDatesUpgradeSlotProps) => ( + + + +); + +interface BannerDatesUpgradeSlotProps { + courseId: string; + logUpgradeLinkClick: () => void; +} diff --git a/src/plugin-slots/README.md b/src/plugin-slots/README.md index 9bd3b3dd3b..4519860652 100644 --- a/src/plugin-slots/README.md +++ b/src/plugin-slots/README.md @@ -2,6 +2,7 @@ * [`org.openedx.frontend.layout.footer.v1`](./FooterSlot/) * [`org.openedx.frontend.layout.header_learning.v1`](./HeaderSlot/) +* [`org.openedx.frontend.learning.banner_dates_upgrade.v1`](./BannerDatesUpgradeSlot/) * [`org.openedx.frontend.learning.content_iframe_loader.v1`](./ContentIFrameLoaderSlot/) * [`org.openedx.frontend.learning.course_breadcrumbs.v1`](./CourseBreadcrumbsSlot/) * [`org.openedx.frontend.learning.course_home_section_outline.v1`](./CourseHomeSectionOutlineSlot/)