diff --git a/src/components/learner-credit-management/LearnerCreditAllocationTable.jsx b/src/components/learner-credit-management/LearnerCreditAllocationTable.jsx
index 081eff5946..12eada0677 100644
--- a/src/components/learner-credit-management/LearnerCreditAllocationTable.jsx
+++ b/src/components/learner-credit-management/LearnerCreditAllocationTable.jsx
@@ -7,6 +7,7 @@ import moment from 'moment';
import TableTextFilter from './TableTextFilter';
import EmailAddressTableCell from './EmailAddressTableCell';
+import { getCourseProductLineText } from '../../utils';
export const PAGE_SIZE = 20;
export const DEFAULT_PAGE = 0; // `DataTable` uses zero-index array
@@ -52,6 +53,11 @@ const LearnerCreditAllocationTable = ({
Cell: ({ row }) => moment(row.values.enrollmentDate).format('MMMM DD, YYYY'),
disableFilters: true,
},
+ {
+ Header: 'Product',
+ accessor: 'courseProductLine',
+ Cell: ({ row }) => getCourseProductLineText(row.values.courseProductLine),
+ },
]}
initialTableOptions={{
getRowId: row => row?.uuid?.toString(),
@@ -89,6 +95,7 @@ LearnerCreditAllocationTable.propTypes = {
courseTitle: PropTypes.string.isRequired,
courseListPrice: PropTypes.number.isRequired,
enrollmentDate: PropTypes.string.isRequired,
+ courseProductLine: PropTypes.string.isRequired,
})),
itemCount: PropTypes.number.isRequired,
pageCount: PropTypes.number.isRequired,
diff --git a/src/components/learner-credit-management/data/utils.js b/src/components/learner-credit-management/data/utils.js
index 0ba0628302..7a9101ba16 100644
--- a/src/components/learner-credit-management/data/utils.js
+++ b/src/components/learner-credit-management/data/utils.js
@@ -58,6 +58,7 @@ export const transformUtilizationTableResults = results => results.map(result =>
courseTitle: result.courseTitle,
courseListPrice: result.courseListPrice,
enrollmentDate: result.enrollmentDate,
+ courseProductLine: result.courseProductLine,
uuid: uuidv4(),
}));
diff --git a/src/components/learner-credit-management/tests/LearnerCreditAllocationTable.test.jsx b/src/components/learner-credit-management/tests/LearnerCreditAllocationTable.test.jsx
new file mode 100644
index 0000000000..00ebf8f3fc
--- /dev/null
+++ b/src/components/learner-credit-management/tests/LearnerCreditAllocationTable.test.jsx
@@ -0,0 +1,50 @@
+import React from 'react';
+import {
+ screen,
+ render,
+} from '@testing-library/react';
+import { IntlProvider } from '@edx/frontend-platform/i18n';
+
+import LearnerCreditAllocationTable from '../LearnerCreditAllocationTable';
+
+const LearnerCreditAllocationTableWrapper = (props) => (
+
+
+
+);
+
+describe('', () => {
+ it('renders with table data', () => {
+ const props = {
+ enterpriseUUID: 'test-enterprise-id',
+ isLoading: false,
+ tableData: {
+ results: [{
+ userEmail: 'test@example.com',
+ courseTitle: 'course-title',
+ courseListPrice: 100,
+ enrollmentDate: '2-2-23',
+ courseProductLine: 'OCM',
+ }],
+ itemCount: 1,
+ pageCount: 1,
+ },
+ fetchTableData: jest.fn(),
+ };
+ props.fetchTableData.mockReturnValue(props.tableData);
+
+ render();
+
+ expect(screen.getByText('Open', { exact: false }));
+ expect(screen.getByText(props.tableData.results[0].userEmail.toString(), {
+ exact: false,
+ }));
+ expect(screen.getByText(props.tableData.results[0].courseTitle.toString(), {
+ exact: false,
+ }));
+ expect(screen.getByText(props.tableData.results[0].courseListPrice.toString(), {
+ exact: false,
+ }));
+ expect(screen.getByText('February', { exact: false }));
+ });
+});
diff --git a/src/utils.js b/src/utils.js
index 6fe486e35c..f92dff63b7 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -400,6 +400,12 @@ const pollAsync = async (pollFunc, timeout, interval, checkFunc) => {
return false;
};
+const getCourseProductLineText = (courseProductLine) => {
+ let courseProductLineText = '';
+ courseProductLineText = courseProductLine === 'OCM' ? 'Open Courses' : courseProductLine;
+ return courseProductLineText;
+};
+
export {
camelCaseDict,
camelCaseDictArray,
@@ -433,4 +439,5 @@ export {
capitalizeFirstLetter,
pollAsync,
isNotValidNumberString,
+ getCourseProductLineText,
};