From cfc897221888c84bddd9f36b60f7ec5384e5345b Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Thu, 12 Oct 2023 22:59:13 +0000 Subject: [PATCH 01/23] feat: display search result cards in catalog tab --- .../cards/CourseCard.jsx | 171 ++++++++++++------ .../cards/CourseCard.test.jsx | 68 +++---- .../learner-credit-management/constants.js | 18 ++ .../data/constants.js | 3 + .../learner-credit-management/data/utils.js | 20 ++ .../learner-credit-management/index.jsx | 1 - .../learner-credit.scss | 25 --- .../search/CatalogSearch.jsx | 5 +- .../search/CatalogSearchResults.jsx | 49 +++-- .../tests/CatalogSearchResults.test.jsx | 14 +- src/components/settings/data/hooks.js | 6 - src/components/test/testUtils.jsx | 1 + src/static/default-card-header-dark.png | Bin 0 -> 76508 bytes src/static/default-card-header-light.png | Bin 0 -> 27327 bytes 14 files changed, 226 insertions(+), 155 deletions(-) create mode 100644 src/components/learner-credit-management/constants.js delete mode 100644 src/components/learner-credit-management/learner-credit.scss create mode 100644 src/static/default-card-header-dark.png create mode 100644 src/static/default-card-header-light.png diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index 9284369239..e803c40ba5 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -3,95 +3,150 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { camelCaseObject } from '@edx/frontend-platform'; -import cardFallbackImg from '@edx/brand/paragon/images/card-imagecap-fallback.png'; import { - Badge, Button, Card, Hyperlink, + Badge, + Button, + Card, + Stack, + Hyperlink, + useMediaQuery, + breakpoints, } from '@edx/paragon'; -import { EXEC_COURSE_TYPE } from '../data/constants'; -import { formatDate } from '../data/utils'; +import { injectIntl } from '@edx/frontend-platform/i18n'; + +import { CONTENT_TYPE_COURSE, EXEC_COURSE_TYPE } from '../data'; +import { formatCurrency, formatDate, getRegistrationDeadline } from '../data/utils'; +import CARD_TEXT from '../constants'; +import defaultLogoImg from '../../../static/default-card-header-dark.png'; +import defaultCardImg from '../../../static/default-card-header-light.png'; const CourseCard = ({ - onClick, original, + original, learningType, }) => { const { - title, - cardImageUrl, - courseType, - normalizedMetadata, + availability, + card_image_url, + course_type, + entitlements, + first_enrollable_paid_seat_price, + normalized_metadata, partners, - } = camelCaseObject(original); + title, + } = original; + + const isSmall = useMediaQuery({ maxWidth: breakpoints.small.maxWidth }); + const isExtraSmall = useMediaQuery({ maxWidth: breakpoints.extraSmall.maxWidth }); + + const { + BADGE, + BUTTON_ACTION, + PRICE, + REGISTRATION, + } = CARD_TEXT; + let rowPrice; let priceText; + + if (learningType === CONTENT_TYPE_COURSE) { + rowPrice = first_enrollable_paid_seat_price; + priceText = rowPrice != null ? `${formatCurrency(rowPrice)}` : 'N/A'; + } else { + [rowPrice] = entitlements || [null]; + priceText = rowPrice != null ? `${formatCurrency(rowPrice?.price)}` : 'N/A'; + } + + const imageSrc = card_image_url || defaultCardImg; + const logoSrc = partners[0]?.logo_image_url || defaultLogoImg; + const altText = `${title} course image`; + const formatAvailability = availability.length ? availability.join(', ') : null; + + const registrationDeadline = getRegistrationDeadline(normalized_metadata?.enroll_by_date); + + let courseRegistrationInfo; + if (normalized_metadata?.enroll_by_date) { + courseRegistrationInfo = `${formatAvailability} • ${REGISTRATION.text} ${registrationDeadline}`; + } else { + courseRegistrationInfo = formatAvailability; + } + + let execEdRegistrationInfo; + if (normalized_metadata?.enroll_by_date) { + execEdRegistrationInfo = `Starts ${formatDate(normalized_metadata.start_date)} • + ${REGISTRATION.text} ${registrationDeadline}`; + } else { + execEdRegistrationInfo = formatAvailability; + } + + const isExecEd = course_type === EXEC_COURSE_TYPE; + return ( onClick(original)} - orientation="horizontal" - tabIndex="0" + isClickable + orientation={isSmall ? 'vertical' : 'horizontal'} > -
-
-

{title}

-

{partners[0]?.name}

- {courseType === EXEC_COURSE_TYPE && ( - - Executive Education - + + +

{priceText}

+ {PRICE.subText} + )} - {courseType !== EXEC_COURSE_TYPE && ( -

- )} -

- Starts {formatDate(normalizedMetadata?.start_date)} • - Learner must register by {formatDate(normalizedMetadata?.enroll_by_date)} -

-
- -

{priceText}

-

Per learner price

- - - - - + /> + + + {isExecEd ? BADGE.execEd : BADGE.course} + -
+ + + + +
); }; -CourseCard.defaultProps = { - onClick: () => {}, -}; - CourseCard.propTypes = { - onClick: PropTypes.func, + learningType: PropTypes.string.isRequired, original: PropTypes.shape({ - title: PropTypes.string, - cardImageUrl: PropTypes.string, + availability: PropTypes.string, + card_image_url: PropTypes.string, + course_type: PropTypes.string, + entitlements: PropTypes.arrayOf(PropTypes.shape()), + first_enrollable_paid_seat_price: PropTypes.number, + normalized_metadata: PropTypes.shape(), + original_image_url: PropTypes.string, partners: PropTypes.arrayOf( PropTypes.shape({ - name: PropTypes.string, logo_image_url: PropTypes.string, + name: PropTypes.string, }), ), - normalizedMetadata: PropTypes.shape({ - startDate: PropTypes.string, - endDate: PropTypes.string, - enrollByDate: PropTypes.string, - }), - courseType: PropTypes.string, + title: PropTypes.string, }).isRequired, }; -export default CourseCard; +export default injectIntl(CourseCard); diff --git a/src/components/learner-credit-management/cards/CourseCard.test.jsx b/src/components/learner-credit-management/cards/CourseCard.test.jsx index 963137e178..97649d6283 100644 --- a/src/components/learner-credit-management/cards/CourseCard.test.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.test.jsx @@ -4,22 +4,20 @@ import '@testing-library/jest-dom/extend-expect'; import { IntlProvider } from '@edx/frontend-platform/i18n'; import CourseCard from './CourseCard'; -import { CONTENT_TYPE_COURSE, EXEC_ED_TITLE } from '../data/constants'; - -jest.mock('@edx/frontend-platform', () => ({ - ...jest.requireActual('@edx/frontend-platform'), -})); - -const TEST_CATALOG = ['ayylmao']; +import { CONTENT_TYPE_COURSE, EXEC_COURSE_TYPE } from '../data'; const originalData = { - title: 'Course Title', + availability: ['Upcoming'], card_image_url: undefined, - partners: [{ logo_image_url: '', name: 'Course Provider' }], + course_type: 'course', first_enrollable_paid_seat_price: 100, + normalized_metadata: { + enroll_by_date: '2016-02-18T04:00:00Z', + start_date: '2016-04-18T04:00:00Z', + }, original_image_url: '', - enterprise_catalog_query_titles: TEST_CATALOG, - advertised_course_run: { pacing_type: 'self_paced' }, + partners: [{ logo_image_url: '', name: 'Course Provider' }], + title: 'Course Title', }; const defaultProps = { @@ -28,23 +26,27 @@ const defaultProps = { }; const execEdData = { - title: 'Exec Ed Course Title', + availability: ['Upcoming'], card_image_url: undefined, - partners: [{ logo_image_url: '', name: 'Course Provider' }], + course_type: 'executive-education-2u', + entitlements: [{ price: '999.00' }], first_enrollable_paid_seat_price: 100, + normalized_metadata: { + enroll_by_date: '2016-02-18T04:00:00Z', + start_date: '2016-04-18T04:00:00Z', + }, original_image_url: '', - enterprise_catalog_query_titles: TEST_CATALOG, - advertised_course_run: { pacing_type: 'instructor_paced' }, - entitlements: [{ price: '999.00' }], + partners: [{ logo_image_url: '', name: 'Course Provider' }], + title: 'Exec Ed Title', }; const execEdProps = { + learningType: EXEC_COURSE_TYPE, original: execEdData, - learningType: EXEC_ED_TITLE, }; describe('Course card works as expected', () => { - test('card renders as expected', () => { + test('course card renders', () => { render( @@ -54,21 +56,14 @@ describe('Course card works as expected', () => { expect( screen.queryByText(defaultProps.original.partners[0].name), ).toBeInTheDocument(); - expect(screen.queryByText('Course Title')).toBeInTheDocument(); + expect(screen.queryByText('$100')).toBeInTheDocument(); expect(screen.queryByText('Per learner price')).toBeInTheDocument(); + expect(screen.queryByText('Upcoming • Learner must register by Feb 18, 2016')).toBeInTheDocument(); + expect(screen.queryByText('Course')).toBeInTheDocument(); + expect(screen.queryByText('View Course')).toBeInTheDocument(); + expect(screen.queryByText('Assign')).toBeInTheDocument(); }); - test('exec ed card renders as expected', () => { - render( - - - , - ); - expect(screen.queryByText(execEdProps.original.title)).toBeInTheDocument(); - expect( - screen.queryByText(execEdProps.original.partners[0].name), - ).toBeInTheDocument(); - expect(screen.queryByText('Exec Ed Course Title')).toBeInTheDocument(); - }); + test('test card renders default image', async () => { render( @@ -79,4 +74,15 @@ describe('Course card works as expected', () => { fireEvent.error(screen.getByAltText(imageAltText)); await expect(screen.getByAltText(imageAltText).src).not.toBeUndefined; }); + + test('exec ed card renders', async () => { + render( + + + , + ); + expect(screen.queryByText('$999')).toBeInTheDocument(); + expect(screen.queryByText('Starts Apr 18, 2016 • Learner must register by Feb 18, 2016')).toBeInTheDocument(); + expect(screen.queryByText('Executive Education')).toBeInTheDocument(); + }); }); diff --git a/src/components/learner-credit-management/constants.js b/src/components/learner-credit-management/constants.js new file mode 100644 index 0000000000..85e827b07a --- /dev/null +++ b/src/components/learner-credit-management/constants.js @@ -0,0 +1,18 @@ +const CARD_TEXT = { + BADGE: { + course: 'Course', + execEd: 'Executive Education', + }, + BUTTON_ACTION: { + viewCourse: 'View Course', + assign: 'Assign', + }, + REGISTRATION: { + text: 'Learner must register by', + }, + PRICE: { + subText: 'Per learner price', + }, +}; + +export default CARD_TEXT; diff --git a/src/components/learner-credit-management/data/constants.js b/src/components/learner-credit-management/data/constants.js index 37f453bd4a..8450a122c2 100644 --- a/src/components/learner-credit-management/data/constants.js +++ b/src/components/learner-credit-management/data/constants.js @@ -34,3 +34,6 @@ export const CONTENT_TYPE_COURSE = 'course'; export const EXEC_ED_TITLE = 'Executive Education'; export const EXEC_COURSE_TYPE = 'executive-education-2u'; + +// Learner must register within 90 days of assignment +export const ASSIGNMENT_REGISTRATION_DEADLINE = 90; diff --git a/src/components/learner-credit-management/data/utils.js b/src/components/learner-credit-management/data/utils.js index 4705d62507..c0a559e84e 100644 --- a/src/components/learner-credit-management/data/utils.js +++ b/src/components/learner-credit-management/data/utils.js @@ -4,6 +4,7 @@ import dayjs from 'dayjs'; import { LOW_REMAINING_BALANCE_PERCENT_THRESHOLD, NO_BALANCE_REMAINING_DOLLAR_THRESHOLD, + ASSIGNMENT_REGISTRATION_DEADLINE, } from './constants'; import { BUDGET_STATUSES } from '../../EnterpriseApp/data/constants'; /** @@ -187,3 +188,22 @@ export const orderOffers = (offers) => { export function formatDate(date) { return dayjs(date).format('MMM D, YYYY'); } + +export function formatCurrency(currency) { + const currencyUS = Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + minimumFractionDigits: 0, + }); + + return currencyUS.format(currency); +} + +export function getRegistrationDeadline(enrollByDate) { + const currentDate = new Date(); + const registrationDeadline = new Date(currentDate.setDate(currentDate.getDate() + ASSIGNMENT_REGISTRATION_DEADLINE)); + const courseEnrollByDate = new Date(enrollByDate); + return Date.parse(registrationDeadline) > Date.parse(courseEnrollByDate) + ? formatDate(courseEnrollByDate) + : formatDate(registrationDeadline); +} diff --git a/src/components/learner-credit-management/index.jsx b/src/components/learner-credit-management/index.jsx index eb68ef0a21..43786e8a0b 100644 --- a/src/components/learner-credit-management/index.jsx +++ b/src/components/learner-credit-management/index.jsx @@ -2,7 +2,6 @@ import React from 'react'; import { Route } from 'react-router-dom'; import PropTypes from 'prop-types'; import MultipleBudgetsPage from './MultipleBudgetsPage'; -import './learner-credit.scss'; import BudgetDetailPage from './BudgetDetailPage'; const LearnerCreditManagementRoutes = ({ match }) => ( diff --git a/src/components/learner-credit-management/learner-credit.scss b/src/components/learner-credit-management/learner-credit.scss deleted file mode 100644 index c26c3e9859..0000000000 --- a/src/components/learner-credit-management/learner-credit.scss +++ /dev/null @@ -1,25 +0,0 @@ -.card-container { - display: flex; - padding: 1rem; - flex-grow: 1; - justify-content: space-between; - - .section-1 { - flex-direction: column; - } - .section-2 { - margin-left: 0; - text-align: end !important; - min-width: 400px; - padding-right: 0; - justify-content: space-between; - .footer { - justify-content: end; - padding: 0; - } - } -} - -.badge { - margin: 4px; -} diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index 43cc7aae8d..c830bceae7 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import { useParams } from 'react-router-dom'; import algoliasearch from 'algoliasearch/lite'; import { Configure, InstantSearch } from 'react-instantsearch-dom'; @@ -10,10 +9,10 @@ import { configuration } from '../../../config'; import CatalogSearchResults from './CatalogSearchResults'; const CatalogSearch = () => { - const { budgetId } = useParams(); const searchClient = algoliasearch(configuration.ALGOLIA.APP_ID, configuration.ALGOLIA.SEARCH_API_KEY); - const searchFilters = `enterprise_catalog_query_uuids:${budgetId}`; + // UUID is hardcoded because this is pending completion of ENT-7610 + const searchFilters = 'enterprise_catalog_uuids:ead5dbb2-096f-4c73-832f-5fd37e67849c'; return (
diff --git a/src/components/learner-credit-management/search/CatalogSearchResults.jsx b/src/components/learner-credit-management/search/CatalogSearchResults.jsx index 60c20e0262..84d8b54caa 100644 --- a/src/components/learner-credit-management/search/CatalogSearchResults.jsx +++ b/src/components/learner-credit-management/search/CatalogSearchResults.jsx @@ -1,19 +1,17 @@ -import React, { useEffect, useMemo } from 'react'; +import React, { useContext, useEffect, useMemo } from 'react'; import { connectStateResults } from 'react-instantsearch-dom'; import PropTypes from 'prop-types'; -import { SearchPagination } from '@edx/frontend-enterprise-catalog-search'; +import { SearchPagination, SearchContext } from '@edx/frontend-enterprise-catalog-search'; import { FormattedMessage, injectIntl } from '@edx/frontend-platform/i18n'; import { - Alert, CardView, DataTable, Skeleton, + Alert, CardView, DataTable, TextFilter, } from '@edx/paragon'; import CourseCard from '../cards/CourseCard'; export const ERROR_MESSAGE = 'An error occurred while retrieving data'; -export const SKELETON_DATA_TESTID = 'enterprise-catalog-skeleton'; - /** * The core search results rendering component. * @@ -27,8 +25,10 @@ export const SKELETON_DATA_TESTID = 'enterprise-catalog-skeleton'; export const BaseCatalogSearchResults = ({ searchResults, + searchState, // algolia recommends this prop instead of searching isSearchStalled, + paginationComponent: PaginationComponent, error, setNoContent, }) => { @@ -58,20 +58,14 @@ export const BaseCatalogSearchResults = ({ () => searchResults?.hits || [], [searchResults?.hits], ); - const renderCardComponent = (props) => ; + const { refinements } = useContext(SearchContext); + const page = refinements.page || (searchState ? searchState.page : 0); useEffect(() => { setNoContent(searchResults === null || searchResults?.nbHits === 0); }, [searchResults, setNoContent]); - if (isSearchStalled) { - return ( -
- -
- ); - } if (error) { return ( @@ -88,21 +82,38 @@ export const BaseCatalogSearchResults = ({ return (
renderCardComponent(props)} /> - + + +
); @@ -115,6 +126,7 @@ BaseCatalogSearchResults.defaultProps = { row: null, preview: false, setNoContent: () => {}, + courseType: null, }; BaseCatalogSearchResults.propTypes = { @@ -142,6 +154,7 @@ BaseCatalogSearchResults.propTypes = { // eslint-disable-next-line react/no-unused-prop-types row: PropTypes.string, contentType: PropTypes.string.isRequired, + courseType: PropTypes.string, preview: PropTypes.bool, setNoContent: PropTypes.func, }; diff --git a/src/components/learner-credit-management/tests/CatalogSearchResults.test.jsx b/src/components/learner-credit-management/tests/CatalogSearchResults.test.jsx index 34a75e3ac0..3cbd296449 100644 --- a/src/components/learner-credit-management/tests/CatalogSearchResults.test.jsx +++ b/src/components/learner-credit-management/tests/CatalogSearchResults.test.jsx @@ -5,9 +5,7 @@ import '@testing-library/jest-dom/extend-expect'; import { SearchContext } from '@edx/frontend-enterprise-catalog-search'; import { IntlProvider } from '@edx/frontend-platform/i18n'; -import { BaseCatalogSearchResults, SKELETON_DATA_TESTID } from '../search/CatalogSearchResults'; - -import { renderWithRouter } from '../../test/testUtils'; +import { BaseCatalogSearchResults } from '../search/CatalogSearchResults'; import { CONTENT_TYPE_COURSE } from '../data/constants'; @@ -141,14 +139,4 @@ describe('Main Catalogs view works as expected', () => { expect(screen.queryByText(TEST_COURSE_NAME_2)).toBeInTheDocument(); expect(screen.getAllByText('Showing 2 of 2.')[0]).toBeInTheDocument(); }); - test('isSearchStalled leads to rendering skeleton and not content', () => { - renderWithRouter( - - - , - ); - expect(screen.queryByRole('alert')).not.toBeInTheDocument(); - expect(screen.queryByText(TEST_COURSE_NAME)).not.toBeInTheDocument(); - expect(screen.getByTestId(SKELETON_DATA_TESTID)).toBeInTheDocument(); - }); }); diff --git a/src/components/settings/data/hooks.js b/src/components/settings/data/hooks.js index e907c36a34..6677841763 100644 --- a/src/components/settings/data/hooks.js +++ b/src/components/settings/data/hooks.js @@ -132,13 +132,7 @@ export const useStylesForCustomBrandColors = (branding) => { .btn-brand:focus:before { border-color: ${brandColors.secondary.regular.hex()} !important; } - .btn-primary { - background-color: ${brandColors.primary.regular.hex()} !important; - border-color: ${brandColors.primary.regular.hex()} !important; - color: ${brandColors.primary.textColor.hex()} !important; - } .btn-primary:hover { - background-color: ${brandColors.primary.dark.hex()} !important; border-color: ${brandColors.primary.dark.hex()} !important; } .btn-brand-primary { diff --git a/src/components/test/testUtils.jsx b/src/components/test/testUtils.jsx index 02a98208fb..59fc67ae11 100644 --- a/src/components/test/testUtils.jsx +++ b/src/components/test/testUtils.jsx @@ -1,5 +1,6 @@ /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable import/prefer-default-export */ +/* eslint-disable react/prop-types */ import React from 'react'; import { Router } from 'react-router-dom'; import { createMemoryHistory } from 'history'; diff --git a/src/static/default-card-header-dark.png b/src/static/default-card-header-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d692970952c1fdfdd6a9bae9885ecee639b9ffda GIT binary patch literal 76508 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 M;QyYc5dVe!f9`84GXMYp literal 0 HcmV?d00001 diff --git a/src/static/default-card-header-light.png b/src/static/default-card-header-light.png new file mode 100644 index 0000000000000000000000000000000000000000..9da8a136f2bf9edd9223ad1a944b24d006d21d2a GIT binary patch literal 27327 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 Ai~s-t literal 0 HcmV?d00001 From 853811c8d4bf7dd08be07615a58f88748adcb040 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Fri, 13 Oct 2023 16:54:48 +0000 Subject: [PATCH 02/23] fix: failing test in BudgetDetailPage --- src/components/learner-credit-management/cards/CourseCard.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index e803c40ba5..379b1103f4 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -60,7 +60,7 @@ const CourseCard = ({ const altText = `${title} course image`; - const formatAvailability = availability.length ? availability.join(', ') : null; + const formatAvailability = availability?.length ? availability.join(', ') : null; const registrationDeadline = getRegistrationDeadline(normalized_metadata?.enroll_by_date); From 2a946214be396b1d60c09bb9155ea49e42cf1a83 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Fri, 13 Oct 2023 17:45:25 +0000 Subject: [PATCH 03/23] fix: replace word register with enroll --- .../cards/CourseCard.jsx | 22 +++++++++---------- .../cards/CourseCard.test.jsx | 4 ++-- .../learner-credit-management/constants.js | 4 ++-- .../data/constants.js | 4 ++-- .../learner-credit-management/data/utils.js | 10 ++++----- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index 379b1103f4..285d752281 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -15,7 +15,7 @@ import { import { injectIntl } from '@edx/frontend-platform/i18n'; import { CONTENT_TYPE_COURSE, EXEC_COURSE_TYPE } from '../data'; -import { formatCurrency, formatDate, getRegistrationDeadline } from '../data/utils'; +import { formatCurrency, formatDate, getEnrollmentDeadline } from '../data/utils'; import CARD_TEXT from '../constants'; import defaultLogoImg from '../../../static/default-card-header-dark.png'; import defaultCardImg from '../../../static/default-card-header-light.png'; @@ -41,7 +41,7 @@ const CourseCard = ({ BADGE, BUTTON_ACTION, PRICE, - REGISTRATION, + ENROLLMENT, } = CARD_TEXT; let rowPrice; @@ -62,21 +62,21 @@ const CourseCard = ({ const formatAvailability = availability?.length ? availability.join(', ') : null; - const registrationDeadline = getRegistrationDeadline(normalized_metadata?.enroll_by_date); + const enrollmentDeadline = getEnrollmentDeadline(normalized_metadata?.enroll_by_date); - let courseRegistrationInfo; + let courseEnrollmentInfo; if (normalized_metadata?.enroll_by_date) { - courseRegistrationInfo = `${formatAvailability} • ${REGISTRATION.text} ${registrationDeadline}`; + courseEnrollmentInfo = `${formatAvailability} • ${ENROLLMENT.text} ${enrollmentDeadline}`; } else { - courseRegistrationInfo = formatAvailability; + courseEnrollmentInfo = formatAvailability; } - let execEdRegistrationInfo; + let execEdEnrollmentInfo; if (normalized_metadata?.enroll_by_date) { - execEdRegistrationInfo = `Starts ${formatDate(normalized_metadata.start_date)} • - ${REGISTRATION.text} ${registrationDeadline}`; + execEdEnrollmentInfo = `Starts ${formatDate(normalized_metadata.start_date)} • + ${ENROLLMENT.text} ${enrollmentDeadline}`; } else { - execEdRegistrationInfo = formatAvailability; + execEdEnrollmentInfo = formatAvailability; } const isExecEd = course_type === EXEC_COURSE_TYPE; @@ -111,7 +111,7 @@ const CourseCard = ({
); }; +CatalogSearch.propTypes = { + enterpriseSlug: PropTypes.string.isRequired, +}; + export default CatalogSearch; diff --git a/src/components/learner-credit-management/search/CatalogSearchResults.jsx b/src/components/learner-credit-management/search/CatalogSearchResults.jsx index a0049a7934..672cca2d83 100644 --- a/src/components/learner-credit-management/search/CatalogSearchResults.jsx +++ b/src/components/learner-credit-management/search/CatalogSearchResults.jsx @@ -24,6 +24,7 @@ export const ERROR_MESSAGE = 'An error occurred while retrieving data'; */ export const BaseCatalogSearchResults = ({ + enterpriseSlug, searchResults, searchState, // algolia recommends this prop instead of searching @@ -58,7 +59,7 @@ export const BaseCatalogSearchResults = ({ () => searchResults?.hits || [], [searchResults?.hits], ); - const renderCardComponent = (props) => ; + const renderCardComponent = (props) => ; const { refinements } = useContext(SearchContext); const page = refinements.page || (searchState ? searchState.page : 0); @@ -128,6 +129,7 @@ BaseCatalogSearchResults.defaultProps = { }; BaseCatalogSearchResults.propTypes = { + enterpriseSlug: PropTypes.string.isRequired, // from Algolia searchResults: PropTypes.shape({ _state: PropTypes.shape({ From 2c7bd80ff27961b41d88490356622e41c1e96d08 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Thu, 19 Oct 2023 21:26:40 +0000 Subject: [PATCH 09/23] fix: failing test --- .../BudgetDetailCatalogTabContents.jsx | 14 ++++++++++++-- .../search/CatalogSearch.jsx | 12 +++++++----- .../search/CatalogSearchResults.jsx | 4 +++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx index a99f268db3..a143c1f07a 100644 --- a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx +++ b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx @@ -5,10 +5,20 @@ import { Row, Col } from '@edx/paragon'; import { SearchData, SEARCH_FACET_FILTERS } from '@edx/frontend-enterprise-catalog-search'; import CatalogSearch from './search/CatalogSearch'; -import { LANGUAGE_REFINEMENT, LEARNING_TYPE_REFINEMENT } from './data'; +import { + LANGUAGE_REFINEMENT, + LEARNING_TYPE_REFINEMENT, + useBudgetId, + useSubsidyAccessPolicy, +} from './data'; import { configuration } from '../../config'; const BudgetDetailCatalogTabContents = () => { + const { subsidyAccessPolicyId } = useBudgetId(); + const { + data: subsidyAccessPolicy, + } = useSubsidyAccessPolicy(subsidyAccessPolicyId); + const language = { attribute: LANGUAGE_REFINEMENT, title: 'Language', @@ -38,7 +48,7 @@ const BudgetDetailCatalogTabContents = () => { indexName={configuration.ALGOLIA.INDEX_NAME} searchClient={searchClient} > - + diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index 5293ce4fc4..a1c4a3b7f4 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -1,19 +1,17 @@ import React from 'react'; import algoliasearch from 'algoliasearch/lite'; import { Configure, InstantSearch } from 'react-instantsearch-dom'; +import PropTypes from 'prop-types'; import { FormattedMessage } from '@edx/frontend-platform/i18n'; import { SearchHeader } from '@edx/frontend-enterprise-catalog-search'; import { configuration } from '../../../config'; import CatalogSearchResults from './CatalogSearchResults'; -import { useBudgetId, useSubsidyAccessPolicy } from '../data'; -const CatalogSearch = () => { +const CatalogSearch = ({ catalogUuid }) => { const searchClient = algoliasearch(configuration.ALGOLIA.APP_ID, configuration.ALGOLIA.SEARCH_API_KEY); - const { subsidyAccessPolicyId } = useBudgetId(); - const { data: subsidyAccessPolicy } = useSubsidyAccessPolicy(subsidyAccessPolicyId); - const searchFilters = `enterprise_catalog_uuids:${subsidyAccessPolicy?.catalogUuid}`; + const searchFilters = `enterprise_catalog_uuids:${catalogUuid}`; return (
@@ -41,4 +39,8 @@ const CatalogSearch = () => { ); }; +CatalogSearch.propTypes = { + catalogUuid: PropTypes.string, +}; + export default CatalogSearch; diff --git a/src/components/learner-credit-management/search/CatalogSearchResults.jsx b/src/components/learner-credit-management/search/CatalogSearchResults.jsx index a0049a7934..ae7be249aa 100644 --- a/src/components/learner-credit-management/search/CatalogSearchResults.jsx +++ b/src/components/learner-credit-management/search/CatalogSearchResults.jsx @@ -24,6 +24,7 @@ export const ERROR_MESSAGE = 'An error occurred while retrieving data'; */ export const BaseCatalogSearchResults = ({ + catalogUuid, searchResults, searchState, // algolia recommends this prop instead of searching @@ -58,7 +59,7 @@ export const BaseCatalogSearchResults = ({ () => searchResults?.hits || [], [searchResults?.hits], ); - const renderCardComponent = (props) => ; + const renderCardComponent = (props) => ; const { refinements } = useContext(SearchContext); const page = refinements.page || (searchState ? searchState.page : 0); @@ -128,6 +129,7 @@ BaseCatalogSearchResults.defaultProps = { }; BaseCatalogSearchResults.propTypes = { + catalogUuid: PropTypes.string.isRequired, // from Algolia searchResults: PropTypes.shape({ _state: PropTypes.shape({ From a7158f6b63bd364773c009d215e36fc77586996b Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Thu, 19 Oct 2023 21:46:38 +0000 Subject: [PATCH 10/23] fix: added test --- .../cards/CourseCard.test.jsx | 49 +++++++++++++++++-- .../search/CatalogSearchResults.jsx | 17 +++---- 2 files changed, 53 insertions(+), 13 deletions(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.test.jsx b/src/components/learner-credit-management/cards/CourseCard.test.jsx index b9d3628266..240d931233 100644 --- a/src/components/learner-credit-management/cards/CourseCard.test.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.test.jsx @@ -2,6 +2,7 @@ import React from 'react'; import { fireEvent, render, screen } from '@testing-library/react'; import '@testing-library/jest-dom/extend-expect'; +import { AppContext } from '@edx/frontend-platform/react'; import { IntlProvider } from '@edx/frontend-platform/i18n'; import CourseCard from './CourseCard'; import { CONTENT_TYPE_COURSE, EXEC_COURSE_TYPE } from '../data'; @@ -10,7 +11,9 @@ const originalData = { availability: ['Upcoming'], card_image_url: undefined, course_type: 'course', + content_type: 'course', first_enrollable_paid_seat_price: 100, + key: 'course-123x', normalized_metadata: { enroll_by_date: '2016-02-18T04:00:00Z', start_date: '2016-04-18T04:00:00Z', @@ -23,8 +26,11 @@ const originalData = { const defaultProps = { original: originalData, learningType: CONTENT_TYPE_COURSE, + enterpriseSlug: 'test-enterprise-slug', }; +const mockLearnerPortal = 'https://enterprise.stage.edx.org'; + const execEdData = { availability: ['Upcoming'], card_image_url: undefined, @@ -49,7 +55,13 @@ describe('Course card works as expected', () => { test('course card renders', () => { render( - + + + , ); expect(screen.queryByText(defaultProps.original.title)).toBeInTheDocument(); @@ -67,7 +79,13 @@ describe('Course card works as expected', () => { test('test card renders default image', async () => { render( - + + + , ); const imageAltText = `${originalData.title} course image`; @@ -78,11 +96,36 @@ describe('Course card works as expected', () => { test('exec ed card renders', async () => { render( - + + + , ); expect(screen.queryByText('$999')).toBeInTheDocument(); expect(screen.queryByText('Starts Apr 18, 2016 • Learner must enroll by Feb 18, 2016')).toBeInTheDocument(); expect(screen.queryByText('Executive Education')).toBeInTheDocument(); }); + + test('sets correct course hyperlink', async () => { + render( + + + + + , + ); + + const hyperlink = screen.getByRole('link', { + name: 'View Course Opens in a new tab', + }); + expect(hyperlink.href).toContain('https://enterprise.stage.edx.org/test-enterprise-slug/course/course-123x'); + }); }); diff --git a/src/components/learner-credit-management/search/CatalogSearchResults.jsx b/src/components/learner-credit-management/search/CatalogSearchResults.jsx index 8c6933fd76..de6659b66a 100644 --- a/src/components/learner-credit-management/search/CatalogSearchResults.jsx +++ b/src/components/learner-credit-management/search/CatalogSearchResults.jsx @@ -60,16 +60,13 @@ export const BaseCatalogSearchResults = ({ () => searchResults?.hits || [], [searchResults?.hits], ); - const renderCardComponent = (props) => { - return ( - - ) - }; + const renderCardComponent = (props) => ( + + ); const { refinements } = useContext(SearchContext); const page = refinements.page || (searchState ? searchState.page : 0); From 602cdfa30ea3d39ca86c95a69a3d8096b388a8a0 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Thu, 19 Oct 2023 23:05:52 +0000 Subject: [PATCH 11/23] fix: added test coverage --- .../cards/CourseCard.test.jsx | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.test.jsx b/src/components/learner-credit-management/cards/CourseCard.test.jsx index 240d931233..c8b8c301d1 100644 --- a/src/components/learner-credit-management/cards/CourseCard.test.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.test.jsx @@ -29,6 +29,15 @@ const defaultProps = { enterpriseSlug: 'test-enterprise-slug', }; +const programProps = { + ...defaultProps, + original: { + ...defaultProps.original, + content_type: 'program', + uuid: 'program-123x', + }, +}; + const mockLearnerPortal = 'https://enterprise.stage.edx.org'; const execEdData = { @@ -110,7 +119,7 @@ describe('Course card works as expected', () => { expect(screen.queryByText('Executive Education')).toBeInTheDocument(); }); - test('sets correct course hyperlink', async () => { + test('sets correct course hyperlink for course', async () => { render( { }); expect(hyperlink.href).toContain('https://enterprise.stage.edx.org/test-enterprise-slug/course/course-123x'); }); + + test('sets correct course hyperlink for program', async () => { + render( + + + + + , + ); + const hyperlink = screen.getByRole('link', { + name: 'View Course Opens in a new tab', + }); + expect(hyperlink.href).toContain('https://enterprise.stage.edx.org/test-enterprise-slug/program/program-123x'); + }); }); From 08e54d44aa4c4e312e85a9f7d2f375400a9125ef Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Wed, 25 Oct 2023 23:27:13 +0000 Subject: [PATCH 12/23] fix: refactored based on reviewer feedback --- .../cards/CourseCard.jsx | 53 ++++++++++--------- .../data/constants.js | 3 ++ .../learner-credit-management/data/utils.js | 20 ++----- .../search/CatalogSearch.jsx | 2 + .../search/CatalogSearchResults.jsx | 3 +- src/components/settings/data/hooks.js | 6 +++ 6 files changed, 45 insertions(+), 42 deletions(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index 939bdecc20..ee314b070f 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -13,9 +13,10 @@ import { breakpoints, } from '@edx/paragon'; import { injectIntl } from '@edx/frontend-platform/i18n'; +import { camelCaseObject } from '@edx/frontend-platform'; import { CONTENT_TYPE_COURSE, EXEC_COURSE_TYPE } from '../data'; -import { formatCurrency, formatDate, getEnrollmentDeadline } from '../data/utils'; +import { formatPrice, formatDate, getEnrollmentDeadline } from '../data/utils'; import CARD_TEXT from '../constants'; import defaultLogoImg from '../../../static/default-card-header-dark.png'; import defaultCardImg from '../../../static/default-card-header-light.png'; @@ -25,14 +26,14 @@ const CourseCard = ({ }) => { const { availability, - card_image_url, - course_type, + cardImageUrl, + courseType, entitlements, - first_enrollable_paid_seat_price, - normalized_metadata, + firstEnrollablePaidSeatPrice, + normalizedMetadata, partners, title, - } = original; + } = camelCaseObject(original); const isSmall = useMediaQuery({ maxWidth: breakpoints.small.maxWidth }); const isExtraSmall = useMediaQuery({ maxWidth: breakpoints.extraSmall.maxWidth }); @@ -47,33 +48,33 @@ const CourseCard = ({ let priceText; if (learningType === CONTENT_TYPE_COURSE) { - priceText = first_enrollable_paid_seat_price != null ? `${formatCurrency(first_enrollable_paid_seat_price)}` : 'N/A'; + priceText = firstEnrollablePaidSeatPrice != null ? `${formatPrice(firstEnrollablePaidSeatPrice, {minimumFractionDigits: 0})}` : 'N/A'; } else { const [firstEntitlement] = entitlements || [null]; - priceText = firstEntitlement != null ? `${formatCurrency(firstEntitlement?.price)}` : 'N/A'; + priceText = firstEntitlement != null ? `${formatPrice(firstEntitlement?.price,{ minimumFractionDigits: 0})}` : 'N/A'; } - const imageSrc = card_image_url || defaultCardImg; - const logoSrc = partners[0]?.logo_image_url || defaultLogoImg; + const imageSrc = cardImageUrl || defaultCardImg; + const logoSrc = partners[0]?.logoImageUrl || defaultLogoImg; const altText = `${title} course image`; - const formatAvailability = availability?.length ? availability.join(', ') : null; + const formattedAvailability = availability?.length ? availability.join(', ') : null; - const enrollmentDeadline = getEnrollmentDeadline(normalized_metadata?.enroll_by_date); + const enrollmentDeadline = getEnrollmentDeadline(normalizedMetadata?.enrollByDate); let courseEnrollmentInfo; let execEdEnrollmentInfo; - if (normalized_metadata?.enroll_by_date) { - courseEnrollmentInfo = `${formatAvailability} • ${ENROLLMENT.text} ${enrollmentDeadline}`; - execEdEnrollmentInfo = `Starts ${formatDate(normalized_metadata.start_date)} • + if (normalizedMetadata?.enrollByDate) { + courseEnrollmentInfo = `${formattedAvailability} • ${ENROLLMENT.text} ${enrollmentDeadline}`; + execEdEnrollmentInfo = `Starts ${formatDate(normalizedMetadata.startDate)} • ${ENROLLMENT.text} ${enrollmentDeadline}`; } else { - courseEnrollmentInfo = formatAvailability; - execEdEnrollmentInfo = formatAvailability; + courseEnrollmentInfo = formattedAvailability; + execEdEnrollmentInfo = formattedAvailability; } - const isExecEd = course_type === EXEC_COURSE_TYPE; + const isExecEd = courseType === EXEC_COURSE_TYPE; return ( courseEnrollByDate + const courseEnrollByDate = dayjs(enrollByDate); + const assignmentEnrollmentDeadline = dayjs().add(ASSIGNMENT_ENROLLMENT_DEADLINE, 'days'); + + return courseEnrollByDate <= assignmentEnrollmentDeadline ? formatDate(courseEnrollByDate) - : formatDate(enrollmentDeadline); + : formatDate(assignmentEnrollmentDeadline); } diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index a1c4a3b7f4..bbd975ac40 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -8,6 +8,7 @@ import { SearchHeader } from '@edx/frontend-enterprise-catalog-search'; import { configuration } from '../../../config'; import CatalogSearchResults from './CatalogSearchResults'; +import { SEARCH_RESULT_PAGE_SIZE } from '../data'; const CatalogSearch = ({ catalogUuid }) => { const searchClient = algoliasearch(configuration.ALGOLIA.APP_ID, configuration.ALGOLIA.SEARCH_API_KEY); @@ -26,6 +27,7 @@ const CatalogSearch = ({ catalogUuid }) => { { .btn-brand:focus:before { border-color: ${brandColors.secondary.regular.hex()} !important; } + .btn-primary { + background-color: ${brandColors.primary.regular.hex()} !important; + border-color: ${brandColors.primary.regular.hex()} !important; + color: ${brandColors.primary.textColor.hex()} !important; + } .btn-primary:hover { + background-color: ${brandColors.primary.dark.hex()} !important; border-color: ${brandColors.primary.dark.hex()} !important; } .btn-brand-primary { From f95d4892da0f808416efb46d6be4ccab555a0aae Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Wed, 25 Oct 2023 23:29:49 +0000 Subject: [PATCH 13/23] fix: lint error --- src/components/learner-credit-management/cards/CourseCard.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index ee314b070f..2bcdd5605c 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -48,10 +48,10 @@ const CourseCard = ({ let priceText; if (learningType === CONTENT_TYPE_COURSE) { - priceText = firstEnrollablePaidSeatPrice != null ? `${formatPrice(firstEnrollablePaidSeatPrice, {minimumFractionDigits: 0})}` : 'N/A'; + priceText = firstEnrollablePaidSeatPrice != null ? `${formatPrice(firstEnrollablePaidSeatPrice, { minimumFractionDigits: 0 })}` : 'N/A'; } else { const [firstEntitlement] = entitlements || [null]; - priceText = firstEntitlement != null ? `${formatPrice(firstEntitlement?.price,{ minimumFractionDigits: 0})}` : 'N/A'; + priceText = firstEntitlement != null ? `${formatPrice(firstEntitlement?.price, { minimumFractionDigits: 0 })}` : 'N/A'; } const imageSrc = cardImageUrl || defaultCardImg; From 94bf5ea0d08ce4f9d412d33709d3d21fd39cea11 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Thu, 26 Oct 2023 21:58:04 +0000 Subject: [PATCH 14/23] fix: refactored code to include new api field and updated test --- .../cards/CourseCard.jsx | 20 ++++--------------- .../cards/CourseCard.test.jsx | 4 ++-- .../search/CatalogSearch.jsx | 2 +- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index 2bcdd5605c..f366d133d0 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -15,21 +15,19 @@ import { import { injectIntl } from '@edx/frontend-platform/i18n'; import { camelCaseObject } from '@edx/frontend-platform'; -import { CONTENT_TYPE_COURSE, EXEC_COURSE_TYPE } from '../data'; +import { EXEC_COURSE_TYPE } from '../data'; import { formatPrice, formatDate, getEnrollmentDeadline } from '../data/utils'; import CARD_TEXT from '../constants'; import defaultLogoImg from '../../../static/default-card-header-dark.png'; import defaultCardImg from '../../../static/default-card-header-light.png'; const CourseCard = ({ - original, learningType, + original, }) => { const { availability, cardImageUrl, courseType, - entitlements, - firstEnrollablePaidSeatPrice, normalizedMetadata, partners, title, @@ -45,14 +43,7 @@ const CourseCard = ({ ENROLLMENT, } = CARD_TEXT; - let priceText; - - if (learningType === CONTENT_TYPE_COURSE) { - priceText = firstEnrollablePaidSeatPrice != null ? `${formatPrice(firstEnrollablePaidSeatPrice, { minimumFractionDigits: 0 })}` : 'N/A'; - } else { - const [firstEntitlement] = entitlements || [null]; - priceText = firstEntitlement != null ? `${formatPrice(firstEntitlement?.price, { minimumFractionDigits: 0 })}` : 'N/A'; - } + const price = normalizedMetadata?.contentPrice ? formatPrice(normalizedMetadata.contentPrice, { minimumFractionDigits: 0 }) : 'N/A'; const imageSrc = cardImageUrl || defaultCardImg; const logoSrc = partners[0]?.logoImageUrl || defaultLogoImg; @@ -94,7 +85,7 @@ const CourseCard = ({ subtitle={partners[0]?.name} actions={( -

{priceText}

+

{price}

{PRICE.subText}
)} @@ -125,13 +116,10 @@ const CourseCard = ({ }; CourseCard.propTypes = { - learningType: PropTypes.string, original: PropTypes.shape({ availability: PropTypes.arrayOf(PropTypes.string), cardImageUrl: PropTypes.string, courseType: PropTypes.string, - entitlements: PropTypes.arrayOf(PropTypes.shape()), - firstEnrollablePaidSeatPrice: PropTypes.number, normalizedMetadata: PropTypes.shape(), originalImageUrl: PropTypes.string, partners: PropTypes.arrayOf( diff --git a/src/components/learner-credit-management/cards/CourseCard.test.jsx b/src/components/learner-credit-management/cards/CourseCard.test.jsx index b9d3628266..0a35342d1c 100644 --- a/src/components/learner-credit-management/cards/CourseCard.test.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.test.jsx @@ -10,10 +10,10 @@ const originalData = { availability: ['Upcoming'], card_image_url: undefined, course_type: 'course', - first_enrollable_paid_seat_price: 100, normalized_metadata: { enroll_by_date: '2016-02-18T04:00:00Z', start_date: '2016-04-18T04:00:00Z', + content_price: 100, }, original_image_url: '', partners: [{ logo_image_url: '', name: 'Course Provider' }], @@ -30,10 +30,10 @@ const execEdData = { card_image_url: undefined, course_type: 'executive-education-2u', entitlements: [{ price: '999.00' }], - first_enrollable_paid_seat_price: 100, normalized_metadata: { enroll_by_date: '2016-02-18T04:00:00Z', start_date: '2016-04-18T04:00:00Z', + content_price: 999, }, original_image_url: '', partners: [{ logo_image_url: '', name: 'Course Provider' }], diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index bbd975ac40..4eef940ef1 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -42,7 +42,7 @@ const CatalogSearch = ({ catalogUuid }) => { }; CatalogSearch.propTypes = { - catalogUuid: PropTypes.string, + catalogUuid: PropTypes.string.isRequired, }; export default CatalogSearch; From 284eade6ae046f33c040a2406671a1f256e72627 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Thu, 26 Oct 2023 22:02:21 +0000 Subject: [PATCH 15/23] fix: removing unused prop in test --- .../learner-credit-management/cards/CourseCard.test.jsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.test.jsx b/src/components/learner-credit-management/cards/CourseCard.test.jsx index 0a35342d1c..5d5fed0f2d 100644 --- a/src/components/learner-credit-management/cards/CourseCard.test.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.test.jsx @@ -22,7 +22,6 @@ const originalData = { const defaultProps = { original: originalData, - learningType: CONTENT_TYPE_COURSE, }; const execEdData = { @@ -41,7 +40,6 @@ const execEdData = { }; const execEdProps = { - learningType: EXEC_COURSE_TYPE, original: execEdData, }; From f621880dd2bd241ecac6adbf78b0256e7402be4d Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Thu, 26 Oct 2023 23:13:36 +0000 Subject: [PATCH 16/23] fix: refactored --- .../BudgetDetailCatalogTabContents.jsx | 2 +- .../cards/CourseCard.jsx | 10 ++++----- .../cards/CourseCard.test.jsx | 3 +-- .../learner-credit-management/constants.js | 2 +- .../search/CatalogSearchResults.jsx | 20 +++--------------- src/static/default-card-header-dark.png | Bin 76508 -> 0 bytes src/static/default-card-header-light.png | Bin 27327 -> 0 bytes 7 files changed, 10 insertions(+), 27 deletions(-) delete mode 100644 src/static/default-card-header-dark.png delete mode 100644 src/static/default-card-header-light.png diff --git a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx index a143c1f07a..49498170c6 100644 --- a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx +++ b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx @@ -24,7 +24,7 @@ const BudgetDetailCatalogTabContents = () => { title: 'Language', }; const learningType = { - attribute: LEARNING_TYPE_REFINEMENT, + attribute: `${LEARNING_TYPE_REFINEMENT}:course`, title: 'Learning Type', }; // Add search facet filters if they don't exist in the list yet diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index f366d133d0..238a672a0c 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -14,12 +14,11 @@ import { } from '@edx/paragon'; import { injectIntl } from '@edx/frontend-platform/i18n'; import { camelCaseObject } from '@edx/frontend-platform'; +import cardFallbackImg from '@edx/brand/paragon/images/card-imagecap-fallback.png'; import { EXEC_COURSE_TYPE } from '../data'; import { formatPrice, formatDate, getEnrollmentDeadline } from '../data/utils'; import CARD_TEXT from '../constants'; -import defaultLogoImg from '../../../static/default-card-header-dark.png'; -import defaultCardImg from '../../../static/default-card-header-light.png'; const CourseCard = ({ original, @@ -45,8 +44,8 @@ const CourseCard = ({ const price = normalizedMetadata?.contentPrice ? formatPrice(normalizedMetadata.contentPrice, { minimumFractionDigits: 0 }) : 'N/A'; - const imageSrc = cardImageUrl || defaultCardImg; - const logoSrc = partners[0]?.logoImageUrl || defaultLogoImg; + const imageSrc = cardImageUrl || cardFallbackImg; + const logoSrc = partners[0]?.logoImageUrl; const altText = `${title} course image`; @@ -69,7 +68,6 @@ const CourseCard = ({ return ( - + {isExecEd ? BADGE.execEd : BADGE.course} diff --git a/src/components/learner-credit-management/cards/CourseCard.test.jsx b/src/components/learner-credit-management/cards/CourseCard.test.jsx index 5d5fed0f2d..704a1f825c 100644 --- a/src/components/learner-credit-management/cards/CourseCard.test.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.test.jsx @@ -4,7 +4,6 @@ import '@testing-library/jest-dom/extend-expect'; import { IntlProvider } from '@edx/frontend-platform/i18n'; import CourseCard from './CourseCard'; -import { CONTENT_TYPE_COURSE, EXEC_COURSE_TYPE } from '../data'; const originalData = { availability: ['Upcoming'], @@ -58,7 +57,7 @@ describe('Course card works as expected', () => { expect(screen.queryByText('Per learner price')).toBeInTheDocument(); expect(screen.queryByText('Upcoming • Learner must enroll by Feb 18, 2016')).toBeInTheDocument(); expect(screen.queryByText('Course')).toBeInTheDocument(); - expect(screen.queryByText('View Course')).toBeInTheDocument(); + expect(screen.queryByText('View course')).toBeInTheDocument(); expect(screen.queryByText('Assign')).toBeInTheDocument(); }); diff --git a/src/components/learner-credit-management/constants.js b/src/components/learner-credit-management/constants.js index c33d096326..7148a852d2 100644 --- a/src/components/learner-credit-management/constants.js +++ b/src/components/learner-credit-management/constants.js @@ -4,7 +4,7 @@ const CARD_TEXT = { execEd: 'Executive Education', }, BUTTON_ACTION: { - viewCourse: 'View Course', + viewCourse: 'View course', assign: 'Assign', }, ENROLLMENT: { diff --git a/src/components/learner-credit-management/search/CatalogSearchResults.jsx b/src/components/learner-credit-management/search/CatalogSearchResults.jsx index 6ddd75f7ef..44faafff34 100644 --- a/src/components/learner-credit-management/search/CatalogSearchResults.jsx +++ b/src/components/learner-credit-management/search/CatalogSearchResults.jsx @@ -25,7 +25,6 @@ export const ERROR_MESSAGE = 'An error occurred while retrieving data'; */ export const BaseCatalogSearchResults = ({ - catalogUuid, searchResults, searchState, // algolia recommends this prop instead of searching @@ -60,9 +59,8 @@ export const BaseCatalogSearchResults = ({ () => searchResults?.hits || [], [searchResults?.hits], ); - const renderCardComponent = (props) => ; const { refinements } = useContext(SearchContext); - const page = refinements.page || (searchState ? searchState.page : 0); + const page = refinements.page || (searchState.page || 0); useEffect(() => { setNoContent(searchResults === null || searchResults?.nbHits === 0); @@ -93,24 +91,15 @@ export const BaseCatalogSearchResults = ({ }} isLoading={isSearchStalled} isPaginated - isSortable itemCount={searchResults?.nbHits || 0} manualFilters manualPagination - manualSortBy pageCount={searchResults?.nbPages || 0} - pageSize={searchResults?.hitsPerPage || 0} > renderCardComponent(props)} + columnSizes={{ xs: 12 }} + CardComponent={CourseCard} /> @@ -125,12 +114,10 @@ BaseCatalogSearchResults.defaultProps = { searchResults: { disjunctiveFacetsRefinements: [], nbHits: 0, hits: [] }, error: null, paginationComponent: SearchPagination, - preview: false, setNoContent: () => {}, }; BaseCatalogSearchResults.propTypes = { - catalogUuid: PropTypes.string.isRequired, // from Algolia searchResults: PropTypes.shape({ _state: PropTypes.shape({ @@ -151,7 +138,6 @@ BaseCatalogSearchResults.propTypes = { page: PropTypes.number, }).isRequired, paginationComponent: PropTypes.func, - preview: PropTypes.bool, setNoContent: PropTypes.func, }; diff --git a/src/static/default-card-header-dark.png b/src/static/default-card-header-dark.png deleted file mode 100644 index d692970952c1fdfdd6a9bae9885ecee639b9ffda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76508 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 M;QyYc5dVe!f9`84GXMYp diff --git a/src/static/default-card-header-light.png b/src/static/default-card-header-light.png deleted file mode 100644 index 9da8a136f2bf9edd9223ad1a944b24d006d21d2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27327 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 Ai~s-t From 5a5694552f11d1617a638cc53ce6d8ffdfbadf83 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Thu, 26 Oct 2023 23:31:16 +0000 Subject: [PATCH 17/23] fix: search filters --- .../BudgetDetailCatalogTabContents.jsx | 2 +- .../learner-credit-management/search/CatalogSearch.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx index 49498170c6..a143c1f07a 100644 --- a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx +++ b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx @@ -24,7 +24,7 @@ const BudgetDetailCatalogTabContents = () => { title: 'Language', }; const learningType = { - attribute: `${LEARNING_TYPE_REFINEMENT}:course`, + attribute: LEARNING_TYPE_REFINEMENT, title: 'Learning Type', }; // Add search facet filters if they don't exist in the list yet diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index 4eef940ef1..2cc11bc4d3 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -12,7 +12,7 @@ import { SEARCH_RESULT_PAGE_SIZE } from '../data'; const CatalogSearch = ({ catalogUuid }) => { const searchClient = algoliasearch(configuration.ALGOLIA.APP_ID, configuration.ALGOLIA.SEARCH_API_KEY); - const searchFilters = `enterprise_catalog_uuids:${catalogUuid}`; + const searchFilters = `enterprise_catalog_uuids:${catalogUuid} AND learning_type:'course'`; return (
From b2543ac6d06c90fc23271b1722f583e9fa0743bb Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Fri, 27 Oct 2023 20:15:17 +0000 Subject: [PATCH 18/23] chore: rebase --- .../cards/CourseCard.jsx | 15 ++++----- .../cards/CourseCard.test.jsx | 31 ++----------------- .../search/CatalogSearch.jsx | 1 + .../search/CatalogSearchResults.jsx | 11 ++++++- 4 files changed, 20 insertions(+), 38 deletions(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index 989e439d99..eea5ea7adb 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -2,6 +2,7 @@ // variables taken from algolia not in camelcase import React, { useContext } from 'react'; import PropTypes from 'prop-types'; +import { AppContext } from '@edx/frontend-platform/react'; import { Badge, @@ -21,12 +22,13 @@ import { formatPrice, formatDate, getEnrollmentDeadline } from '../data/utils'; import CARD_TEXT from '../constants'; const CourseCard = ({ - original, + original, enterpriseSlug, }) => { const { availability, cardImageUrl, courseType, + key, normalizedMetadata, partners, title, @@ -67,14 +69,7 @@ const CourseCard = ({ const isExecEd = courseType === EXEC_COURSE_TYPE; - let linkToCourse; - if (content_type === 'program') { - linkToCourse = `${ENTERPRISE_LEARNER_PORTAL_URL}/${enterpriseSlug}/program/${uuid}`; - } else if (content_type === 'course') { - linkToCourse = `${ENTERPRISE_LEARNER_PORTAL_URL}/${enterpriseSlug}/course/${key}`; - } else { - linkToCourse = `${ENTERPRISE_LEARNER_PORTAL_URL}/${enterpriseSlug}/search/${uuid}`; - } + const linkToCourse = `${ENTERPRISE_LEARNER_PORTAL_URL}/${enterpriseSlug}/course/${key}`; return ( { ); const hyperlink = screen.getByRole('link', { - name: 'View Course Opens in a new tab', + name: 'View course Opens in a new tab', }); expect(hyperlink.href).toContain('https://enterprise.stage.edx.org/test-enterprise-slug/course/course-123x'); }); - - test('sets correct course hyperlink for program', async () => { - render( - - - - - , - ); - const hyperlink = screen.getByRole('link', { - name: 'View Course Opens in a new tab', - }); - expect(hyperlink.href).toContain('https://enterprise.stage.edx.org/test-enterprise-slug/program/program-123x'); - }); }); diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index f9b287a47b..8735315d4f 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -43,6 +43,7 @@ const CatalogSearch = ({ catalogUuid, enterpriseSlug }) => { CatalogSearch.propTypes = { catalogUuid: PropTypes.string.isRequired, + enterpriseSlug: PropTypes.string.isRequired, }; export default CatalogSearch; diff --git a/src/components/learner-credit-management/search/CatalogSearchResults.jsx b/src/components/learner-credit-management/search/CatalogSearchResults.jsx index 44faafff34..dcc4fcdf55 100644 --- a/src/components/learner-credit-management/search/CatalogSearchResults.jsx +++ b/src/components/learner-credit-management/search/CatalogSearchResults.jsx @@ -25,6 +25,7 @@ export const ERROR_MESSAGE = 'An error occurred while retrieving data'; */ export const BaseCatalogSearchResults = ({ + enterpriseSlug, searchResults, searchState, // algolia recommends this prop instead of searching @@ -62,6 +63,13 @@ export const BaseCatalogSearchResults = ({ const { refinements } = useContext(SearchContext); const page = refinements.page || (searchState.page || 0); + const renderCardComponent = (props) => ( + + ); + useEffect(() => { setNoContent(searchResults === null || searchResults?.nbHits === 0); }, [searchResults, setNoContent]); @@ -99,7 +107,7 @@ export const BaseCatalogSearchResults = ({ renderCardComponent(props)} /> @@ -118,6 +126,7 @@ BaseCatalogSearchResults.defaultProps = { }; BaseCatalogSearchResults.propTypes = { + enterpriseSlug: PropTypes.string.isRequired, // from Algolia searchResults: PropTypes.shape({ _state: PropTypes.shape({ From 4173876bbc597d4e0f83bf1d9bd0158c7df48a9b Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Fri, 27 Oct 2023 21:55:51 +0000 Subject: [PATCH 19/23] feat: add display name --- .../BudgetDetailCatalogTabContents.jsx | 9 +-------- .../search/CatalogSearch.jsx | 15 ++++++--------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx index a143c1f07a..ee67ecb6de 100644 --- a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx +++ b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx @@ -8,17 +8,10 @@ import CatalogSearch from './search/CatalogSearch'; import { LANGUAGE_REFINEMENT, LEARNING_TYPE_REFINEMENT, - useBudgetId, - useSubsidyAccessPolicy, } from './data'; import { configuration } from '../../config'; const BudgetDetailCatalogTabContents = () => { - const { subsidyAccessPolicyId } = useBudgetId(); - const { - data: subsidyAccessPolicy, - } = useSubsidyAccessPolicy(subsidyAccessPolicyId); - const language = { attribute: LANGUAGE_REFINEMENT, title: 'Language', @@ -48,7 +41,7 @@ const BudgetDetailCatalogTabContents = () => { indexName={configuration.ALGOLIA.INDEX_NAME} searchClient={searchClient} > - + diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index 2cc11bc4d3..0fd4c9b218 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -1,24 +1,25 @@ import React from 'react'; import algoliasearch from 'algoliasearch/lite'; import { Configure, InstantSearch } from 'react-instantsearch-dom'; -import PropTypes from 'prop-types'; import { FormattedMessage } from '@edx/frontend-platform/i18n'; import { SearchHeader } from '@edx/frontend-enterprise-catalog-search'; import { configuration } from '../../../config'; import CatalogSearchResults from './CatalogSearchResults'; -import { SEARCH_RESULT_PAGE_SIZE } from '../data'; +import { SEARCH_RESULT_PAGE_SIZE, useBudgetId, useSubsidyAccessPolicy } from '../data'; -const CatalogSearch = ({ catalogUuid }) => { +const CatalogSearch = () => { const searchClient = algoliasearch(configuration.ALGOLIA.APP_ID, configuration.ALGOLIA.SEARCH_API_KEY); - const searchFilters = `enterprise_catalog_uuids:${catalogUuid} AND learning_type:'course'`; + const { subsidyAccessPolicyId } = useBudgetId(); + const { data: subsidyAccessPolicy } = useSubsidyAccessPolicy(subsidyAccessPolicyId); + const searchFilters = `enterprise_catalog_uuids:${subsidyAccessPolicy.catalogUuid} AND learning_type:'course'`; return (
@@ -41,8 +42,4 @@ const CatalogSearch = ({ catalogUuid }) => { ); }; -CatalogSearch.propTypes = { - catalogUuid: PropTypes.string.isRequired, -}; - export default CatalogSearch; From 74e91dfb37550be967c8fb24a197252fcc595db4 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Fri, 27 Oct 2023 22:17:17 +0000 Subject: [PATCH 20/23] chore: refactored --- src/components/learner-credit-management/cards/CourseCard.jsx | 2 +- .../learner-credit-management/search/CatalogSearch.jsx | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index 88aa00303a..95ec7d353c 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -73,7 +73,7 @@ const CourseCard = ({ execEdEnrollmentInfo = formattedAvailability; } - const isExecEd = courseType === EXEC_COURSE_TYPE; + const isExecEd = courseType === EXEC_ED_COURSE_TYPE; const linkToCourse = `${ENTERPRISE_LEARNER_PORTAL_URL}/${enterpriseSlug}/course/${key}`; diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index f9bfcf9e7a..34a21a6685 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -10,7 +10,7 @@ import { configuration } from '../../../config'; import CatalogSearchResults from './CatalogSearchResults'; import { SEARCH_RESULT_PAGE_SIZE, useBudgetId, useSubsidyAccessPolicy } from '../data'; -const CatalogSearch = ({ catalogUuid, enterpriseSlug }) => { +const CatalogSearch = ({ enterpriseSlug }) => { const searchClient = algoliasearch(configuration.ALGOLIA.APP_ID, configuration.ALGOLIA.SEARCH_API_KEY); const { subsidyAccessPolicyId } = useBudgetId(); const { @@ -46,7 +46,6 @@ const CatalogSearch = ({ catalogUuid, enterpriseSlug }) => { }; CatalogSearch.propTypes = { - catalogUuid: PropTypes.string.isRequired, enterpriseSlug: PropTypes.string.isRequired, }; From 267616825b1e305cece399d21957421e3cdb60e6 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Fri, 27 Oct 2023 22:18:34 +0000 Subject: [PATCH 21/23] chore: fix lint error --- .../learner-credit-management/BudgetDetailCatalogTabContents.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx index a18dd2b18e..17e39509a0 100644 --- a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx +++ b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx @@ -14,7 +14,6 @@ import { import { configuration } from '../../config'; const BudgetDetailCatalogTabContents = ({ enterpriseSlug }) => { - const language = { attribute: LANGUAGE_REFINEMENT, title: 'Language', From 255522298556449d056eb403d2c1a6bbf677b3c1 Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Mon, 30 Oct 2023 17:30:52 +0000 Subject: [PATCH 22/23] chore: refactored --- .../BudgetDetailCatalogTabContents.jsx | 16 +--- .../cards/CourseCard.jsx | 14 ++- .../cards/CourseCard.test.jsx | 87 +++++++++---------- .../search/CatalogSearch.jsx | 9 +- .../search/CatalogSearchResults.jsx | 11 +-- .../tests/CatalogSearch.test.jsx | 36 +++++--- 6 files changed, 84 insertions(+), 89 deletions(-) diff --git a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx index 17e39509a0..ee67ecb6de 100644 --- a/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx +++ b/src/components/learner-credit-management/BudgetDetailCatalogTabContents.jsx @@ -2,8 +2,6 @@ import React from 'react'; import { InstantSearch } from 'react-instantsearch-dom'; import algoliasearch from 'algoliasearch/lite'; import { Row, Col } from '@edx/paragon'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; import { SearchData, SEARCH_FACET_FILTERS } from '@edx/frontend-enterprise-catalog-search'; import CatalogSearch from './search/CatalogSearch'; @@ -13,7 +11,7 @@ import { } from './data'; import { configuration } from '../../config'; -const BudgetDetailCatalogTabContents = ({ enterpriseSlug }) => { +const BudgetDetailCatalogTabContents = () => { const language = { attribute: LANGUAGE_REFINEMENT, title: 'Language', @@ -43,7 +41,7 @@ const BudgetDetailCatalogTabContents = ({ enterpriseSlug }) => { indexName={configuration.ALGOLIA.INDEX_NAME} searchClient={searchClient} > - + @@ -51,12 +49,4 @@ const BudgetDetailCatalogTabContents = ({ enterpriseSlug }) => { ); }; -BudgetDetailCatalogTabContents.propTypes = { - enterpriseSlug: PropTypes.string.isRequired, -}; - -const mapStateToProps = state => ({ - enterpriseSlug: state.portalConfiguration.enterpriseSlug, -}); - -export default connect(mapStateToProps)(BudgetDetailCatalogTabContents); +export default BudgetDetailCatalogTabContents; diff --git a/src/components/learner-credit-management/cards/CourseCard.jsx b/src/components/learner-credit-management/cards/CourseCard.jsx index 95ec7d353c..2d98bf20eb 100644 --- a/src/components/learner-credit-management/cards/CourseCard.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.jsx @@ -3,6 +3,7 @@ import React, { useContext } from 'react'; import PropTypes from 'prop-types'; import { AppContext } from '@edx/frontend-platform/react'; +import { connect } from 'react-redux'; import { Badge, @@ -75,7 +76,12 @@ const CourseCard = ({ const isExecEd = courseType === EXEC_ED_COURSE_TYPE; - const linkToCourse = `${ENTERPRISE_LEARNER_PORTAL_URL}/${enterpriseSlug}/course/${key}`; + let linkToCourse; + if (isExecEd) { + linkToCourse = `${ENTERPRISE_LEARNER_PORTAL_URL}/${enterpriseSlug}/executive-education-2u/course/${key}`; + } else { + linkToCourse = `${ENTERPRISE_LEARNER_PORTAL_URL}/${enterpriseSlug}/course/${key}`; + } return ( ({ + enterpriseSlug: state.portalConfiguration.enterpriseSlug, +}); + +export default connect(mapStateToProps)(injectIntl(CourseCard)); diff --git a/src/components/learner-credit-management/cards/CourseCard.test.jsx b/src/components/learner-credit-management/cards/CourseCard.test.jsx index 11da16d351..cb9304032a 100644 --- a/src/components/learner-credit-management/cards/CourseCard.test.jsx +++ b/src/components/learner-credit-management/cards/CourseCard.test.jsx @@ -1,7 +1,9 @@ import React from 'react'; import { fireEvent, render, screen } from '@testing-library/react'; import '@testing-library/jest-dom/extend-expect'; - +import { Provider } from 'react-redux'; +import thunk from 'redux-thunk'; +import configureMockStore from 'redux-mock-store'; import { AppContext } from '@edx/frontend-platform/react'; import { IntlProvider } from '@edx/frontend-platform/i18n'; import CourseCard from './CourseCard'; @@ -23,7 +25,6 @@ const originalData = { const defaultProps = { original: originalData, - enterpriseSlug: 'test-enterprise-slug', }; const mockLearnerPortal = 'https://enterprise.stage.edx.org'; @@ -32,6 +33,7 @@ const execEdData = { availability: ['Upcoming'], card_image_url: undefined, course_type: 'executive-education-2u', + key: 'exec-ed-course-123x', entitlements: [{ price: '999.00' }], normalized_metadata: { enroll_by_date: '2016-02-18T04:00:00Z', @@ -47,19 +49,41 @@ const execEdProps = { original: execEdData, }; -describe('Course card works as expected', () => { - test('course card renders', () => { - render( - +const mockStore = configureMockStore([thunk]); +const getMockStore = store => mockStore(store); +const enterpriseSlug = 'test-enterprise-slug'; +const enterpriseUUID = '1234'; +const initialStoreState = { + portalConfiguration: { + enterpriseId: enterpriseUUID, + enterpriseSlug, + }, +}; + +const CourseCardWrapper = ({ + initialState = initialStoreState, + ...rest +}) => { + const store = getMockStore({ ...initialState }); + + return ( + + - + - , - ); + + + ); +}; + +describe('Course card works as expected', () => { + test('course card renders', () => { + render(); expect(screen.queryByText(defaultProps.original.title)).toBeInTheDocument(); expect( screen.queryByText(defaultProps.original.partners[0].name), @@ -70,58 +94,27 @@ describe('Course card works as expected', () => { expect(screen.queryByText('Course')).toBeInTheDocument(); expect(screen.queryByText('View course')).toBeInTheDocument(); expect(screen.queryByText('Assign')).toBeInTheDocument(); + const hyperlink = screen.getByRole('link', { + name: 'View course Opens in a new tab', + }); + expect(hyperlink.href).toContain('https://enterprise.stage.edx.org/test-enterprise-slug/course/course-123x'); }); test('test card renders default image', async () => { - render( - - - - - , - ); + render(); const imageAltText = `${originalData.title} course image`; fireEvent.error(screen.getByAltText(imageAltText)); await expect(screen.getByAltText(imageAltText).src).not.toBeUndefined; }); test('exec ed card renders', async () => { - render( - - - - - , - ); + render(); expect(screen.queryByText('$999')).toBeInTheDocument(); expect(screen.queryByText('Starts Apr 18, 2016 • Learner must enroll by Feb 18, 2016')).toBeInTheDocument(); expect(screen.queryByText('Executive Education')).toBeInTheDocument(); - }); - - test('sets correct course hyperlink for course', async () => { - render( - - - - - , - ); - const hyperlink = screen.getByRole('link', { name: 'View course Opens in a new tab', }); - expect(hyperlink.href).toContain('https://enterprise.stage.edx.org/test-enterprise-slug/course/course-123x'); + expect(hyperlink.href).toContain('https://enterprise.stage.edx.org/test-enterprise-slug/executive-education-2u/course/exec-ed-course-123x'); }); }); diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index 34a21a6685..753f6ced65 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -1,7 +1,6 @@ import React from 'react'; import algoliasearch from 'algoliasearch/lite'; import { Configure, InstantSearch } from 'react-instantsearch-dom'; -import PropTypes from 'prop-types'; import { FormattedMessage } from '@edx/frontend-platform/i18n'; import { SearchHeader } from '@edx/frontend-enterprise-catalog-search'; @@ -10,7 +9,7 @@ import { configuration } from '../../../config'; import CatalogSearchResults from './CatalogSearchResults'; import { SEARCH_RESULT_PAGE_SIZE, useBudgetId, useSubsidyAccessPolicy } from '../data'; -const CatalogSearch = ({ enterpriseSlug }) => { +const CatalogSearch = () => { const searchClient = algoliasearch(configuration.ALGOLIA.APP_ID, configuration.ALGOLIA.SEARCH_API_KEY); const { subsidyAccessPolicyId } = useBudgetId(); const { @@ -39,14 +38,10 @@ const CatalogSearch = ({ enterpriseSlug }) => { disableSuggestionRedirect /> - +
); }; -CatalogSearch.propTypes = { - enterpriseSlug: PropTypes.string.isRequired, -}; - export default CatalogSearch; diff --git a/src/components/learner-credit-management/search/CatalogSearchResults.jsx b/src/components/learner-credit-management/search/CatalogSearchResults.jsx index dcc4fcdf55..44faafff34 100644 --- a/src/components/learner-credit-management/search/CatalogSearchResults.jsx +++ b/src/components/learner-credit-management/search/CatalogSearchResults.jsx @@ -25,7 +25,6 @@ export const ERROR_MESSAGE = 'An error occurred while retrieving data'; */ export const BaseCatalogSearchResults = ({ - enterpriseSlug, searchResults, searchState, // algolia recommends this prop instead of searching @@ -63,13 +62,6 @@ export const BaseCatalogSearchResults = ({ const { refinements } = useContext(SearchContext); const page = refinements.page || (searchState.page || 0); - const renderCardComponent = (props) => ( - - ); - useEffect(() => { setNoContent(searchResults === null || searchResults?.nbHits === 0); }, [searchResults, setNoContent]); @@ -107,7 +99,7 @@ export const BaseCatalogSearchResults = ({ renderCardComponent(props)} + CardComponent={CourseCard} /> @@ -126,7 +118,6 @@ BaseCatalogSearchResults.defaultProps = { }; BaseCatalogSearchResults.propTypes = { - enterpriseSlug: PropTypes.string.isRequired, // from Algolia searchResults: PropTypes.shape({ _state: PropTypes.shape({ diff --git a/src/components/learner-credit-management/tests/CatalogSearch.test.jsx b/src/components/learner-credit-management/tests/CatalogSearch.test.jsx index ee74751e87..ab6a0e6a01 100644 --- a/src/components/learner-credit-management/tests/CatalogSearch.test.jsx +++ b/src/components/learner-credit-management/tests/CatalogSearch.test.jsx @@ -6,32 +6,48 @@ import { } from '@edx/frontend-enterprise-catalog-search'; import { IntlProvider } from '@edx/frontend-platform/i18n'; import { screen } from '@testing-library/react'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { renderWithRouter } from '../../test/testUtils'; import CatalogSearch from '../search/CatalogSearch'; +import { useBudgetId, useSubsidyAccessPolicy } from '../data'; + jest.mock('react-instantsearch-dom', () => ({ ...jest.requireActual('react-instantsearch-dom'), InstantSearch: () =>
SEARCH
, Index: () =>
SEARCH
, })); +jest.mock('../data'); + const DEFAULT_SEARCH_CONTEXT_VALUE = { refinements: {} }; +const queryClient = new QueryClient(); const SearchDataWrapper = ({ children, searchContextValue }) => ( - - - {children} - - + + + + {children} + + + ); describe('Catalog Search component', () => { it('properly renders component', () => { + useBudgetId.mockReturnValue({ + subsidyAccessPolicyId: 'test-id', + }); + useSubsidyAccessPolicy.mockReturnValue({ + data: { + catalogUuid: '123', + }, + }); renderWithRouter( From 7be9007ecf377d6ddfce305e43986606b2036ccf Mon Sep 17 00:00:00 2001 From: knguyen2 Date: Mon, 30 Oct 2023 21:21:42 +0000 Subject: [PATCH 23/23] fix: refactored and updated test --- .../learner-credit-management/search/CatalogSearch.jsx | 3 ++- .../tests/BudgetDetailPage.test.jsx | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/learner-credit-management/search/CatalogSearch.jsx b/src/components/learner-credit-management/search/CatalogSearch.jsx index 7dd1702dd5..bde723051e 100644 --- a/src/components/learner-credit-management/search/CatalogSearch.jsx +++ b/src/components/learner-credit-management/search/CatalogSearch.jsx @@ -16,12 +16,13 @@ const CatalogSearch = () => { data: subsidyAccessPolicy, } = useSubsidyAccessPolicy(subsidyAccessPolicyId); const searchFilters = `enterprise_catalog_uuids:${subsidyAccessPolicy.catalogUuid} AND content_type:course`; + const displayName = subsidyAccessPolicy.displayName ? `${subsidyAccessPolicy.displayName} catalog` : 'Overview'; return (
diff --git a/src/components/learner-credit-management/tests/BudgetDetailPage.test.jsx b/src/components/learner-credit-management/tests/BudgetDetailPage.test.jsx index 4264b686f4..253b0768c2 100644 --- a/src/components/learner-credit-management/tests/BudgetDetailPage.test.jsx +++ b/src/components/learner-credit-management/tests/BudgetDetailPage.test.jsx @@ -502,23 +502,27 @@ describe('', () => { expect(modalPopupContents.getByText(expectedModalPopupContent, { exact: false })).toBeInTheDocument(); }); - it('renders with catalog tab active on initial load for assignable budgets', async () => { + it.each([ + { displayName: null }, + { displayName: 'Test Budget Display Name' }, + ])('renders with catalog tab active on initial load for assignable budgets with %s display name', ({ displayName }) => { useParams.mockReturnValue({ budgetId: mockSubsidyAccessPolicyUUID, activeTabKey: 'catalog', }); useSubsidyAccessPolicy.mockReturnValue({ isInitialLoading: false, - data: mockAssignableSubsidyAccessPolicy, + data: { ...mockAssignableSubsidyAccessPolicy, displayName }, }); useBudgetDetailActivityOverview.mockReturnValueOnce({ isLoading: false, data: mockEmptyStateBudgetDetailActivityOverview, }); renderWithRouter(); - + const expectedDisplayName = displayName ? `${displayName} catalog` : 'Overview'; // Catalog tab exists and is active expect(screen.getByText('Catalog').getAttribute('aria-selected')).toBe('true'); + expect(screen.getByText(expectedDisplayName, { selector: 'h3' })); }); it('hides catalog tab when budget is not assignable', () => {