diff --git a/src/containers/CourseHeader/AnonymousUserMenu.jsx b/src/containers/CourseHeader/AnonymousUserMenu.jsx
index 72156cd..df5da10 100644
--- a/src/containers/CourseHeader/AnonymousUserMenu.jsx
+++ b/src/containers/CourseHeader/AnonymousUserMenu.jsx
@@ -7,25 +7,29 @@ import { Button } from '@edx/paragon';
import message from './AnonymousUserMenu.messages';
-function AnonymousUserMenu({ intl }) {
- return (
-
-
-
-
- );
-}
+export const getRegisterUrl = () => {
+ const { LMS_BASE_URL } = getConfig();
+ const locationHref = encodeURIComponent(global.location.href);
+ return `${LMS_BASE_URL}/register?next=${locationHref}`;
+};
+
+export const AnonymousUserMenu = ({ intl }) => (
+
+
+
+
+);
AnonymousUserMenu.propTypes = {
intl: intlShape.isRequired,
diff --git a/src/containers/CourseHeader/AnonymousUserMenu.messages.js b/src/containers/CourseHeader/AnonymousUserMenu.messages.js
deleted file mode 100644
index ad435a0..0000000
--- a/src/containers/CourseHeader/AnonymousUserMenu.messages.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import { defineMessages } from '@edx/frontend-platform/i18n';
-
-const messages = defineMessages({
- close: {
- id: 'general.altText.close',
- defaultMessage: 'Close',
- description: 'Text used as an aria-label to describe closing or dismissing a component',
- },
- registerLowercase: {
- id: 'learning.logistration.register', // ID left for historical purposes
- defaultMessage: 'register',
- description: 'Text in a link, prompting the user to create an account. Used in "learning.logistration.alert"',
- },
- registerSentenceCase: {
- id: 'general.register.sentenceCase',
- defaultMessage: 'Register',
- description: 'Text in a button, prompting the user to register.',
- },
- signInLowercase: {
- id: 'learning.logistration.login', // ID left for historical purposes
- defaultMessage: 'sign in',
- description: 'Text in a link, prompting the user to log in. Used in "learning.logistration.alert"',
- },
- signInSentenceCase: {
- id: 'general.signIn.sentenceCase',
- defaultMessage: 'Sign in',
- description: 'Text in a button, prompting the user to log in.',
- },
-});
-
-export default messages;
diff --git a/src/containers/CourseHeader/AnonymousUserMenu.test.jsx b/src/containers/CourseHeader/AnonymousUserMenu.test.jsx
new file mode 100644
index 0000000..7a564a6
--- /dev/null
+++ b/src/containers/CourseHeader/AnonymousUserMenu.test.jsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import { shallow } from 'enzyme';
+
+import { AnonymousUserMenu } from './AnonymousUserMenu';
+
+jest.mock('@edx/frontend-platform', () => ({
+ getConfig: () => ({
+ LMS_BASE_URL: '',
+ }),
+}));
+jest.mock('@edx/frontend-platform/auth', () => ({
+ getLoginRedirectUrl: (url) => `redirect:${url}`,
+}));
+jest.mock('@edx/paragon', () => ({
+ Button: () => 'Button',
+}));
+
+describe('Header AnonymousUserMenu component', () => {
+ const props = {
+ intl: { formatMessage: (msg) => msg.defaultMessage },
+ };
+ test('snapshot', () => {
+ expect(
+ shallow(),
+ ).toMatchSnapshot();
+ });
+});
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown.jsx b/src/containers/CourseHeader/AuthenticatedUserDropdown.jsx
deleted file mode 100644
index c9b1704..0000000
--- a/src/containers/CourseHeader/AuthenticatedUserDropdown.jsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faUserCircle } from '@fortawesome/free-solid-svg-icons';
-
-import { getConfig } from '@edx/frontend-platform';
-import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
-import { Dropdown } from '@edx/paragon';
-
-import messages from './messages';
-
-function AuthenticatedUserDropdown({ intl, username }) {
- let dashboardMenuItem = (
-
- {intl.formatMessage(messages.dashboard)}
-
- );
- return (
- <>
- {intl.formatMessage(messages.help)}
-
-
-
-
- {username}
-
-
-
- {dashboardMenuItem}
-
- {intl.formatMessage(messages.profile)}
-
-
- {intl.formatMessage(messages.account)}
-
-
- {intl.formatMessage(messages.signOut)}
-
-
-
- >
- );
-}
-
-AuthenticatedUserDropdown.propTypes = {
- intl: intlShape.isRequired,
- username: PropTypes.string.isRequired,
-};
-
-AuthenticatedUserDropdown.defaultProps = {};
-
-export default injectIntl(AuthenticatedUserDropdown);
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown.messages.js b/src/containers/CourseHeader/AuthenticatedUserDropdown.messages.js
deleted file mode 100644
index c9b1704..0000000
--- a/src/containers/CourseHeader/AuthenticatedUserDropdown.messages.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { faUserCircle } from '@fortawesome/free-solid-svg-icons';
-
-import { getConfig } from '@edx/frontend-platform';
-import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
-import { Dropdown } from '@edx/paragon';
-
-import messages from './messages';
-
-function AuthenticatedUserDropdown({ intl, username }) {
- let dashboardMenuItem = (
-
- {intl.formatMessage(messages.dashboard)}
-
- );
- return (
- <>
- {intl.formatMessage(messages.help)}
-
-
-
-
- {username}
-
-
-
- {dashboardMenuItem}
-
- {intl.formatMessage(messages.profile)}
-
-
- {intl.formatMessage(messages.account)}
-
-
- {intl.formatMessage(messages.signOut)}
-
-
-
- >
- );
-}
-
-AuthenticatedUserDropdown.propTypes = {
- intl: intlShape.isRequired,
- username: PropTypes.string.isRequired,
-};
-
-AuthenticatedUserDropdown.defaultProps = {};
-
-export default injectIntl(AuthenticatedUserDropdown);
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown/UserAvatar.jsx b/src/containers/CourseHeader/AuthenticatedUserDropdown/UserAvatar.jsx
new file mode 100644
index 0000000..47eb320
--- /dev/null
+++ b/src/containers/CourseHeader/AuthenticatedUserDropdown/UserAvatar.jsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { faUserCircle } from '@fortawesome/free-solid-svg-icons';
+
+import { Dropdown } from '@edx/paragon';
+
+export const UserAvatar = ({ username }) => (
+
+
+
+ {username}
+
+
+);
+UserAvatar.propTypes = {
+ username: PropTypes.string.isRequired,
+};
+
+UserAvatar.defaultProps = {};
+
+export default UserAvatar;
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown/UserAvatar.test.jsx b/src/containers/CourseHeader/AuthenticatedUserDropdown/UserAvatar.test.jsx
new file mode 100644
index 0000000..a28a655
--- /dev/null
+++ b/src/containers/CourseHeader/AuthenticatedUserDropdown/UserAvatar.test.jsx
@@ -0,0 +1,32 @@
+import React from 'react';
+import { shallow } from 'enzyme';
+
+import UserAvatar from './UserAvatar';
+
+jest.mock('@edx/frontend-platform', () => ({
+ getConfig: () => ({
+ LMS_BASE_URL: '',
+ LOGOUT_URL: '',
+ SUPPORT_URL: '',
+ }),
+}));
+jest.mock('@edx/paragon', () => ({
+ Dropdown: {
+ Toggle: () => 'Dropdown.Toggle',
+ Item: () => 'Dropdown.Item',
+ },
+}));
+jest.mock('@fortawesome/react-fontawesome', () => ({
+ FontAwesomeIcon: () => 'FontAwesomeIcon',
+}));
+
+describe('Header AuthenticatedUserDropdown UserAvatar component', () => {
+ const props = {
+ username: 'test-username',
+ };
+ test('snapshot', () => {
+ expect(
+ shallow(),
+ ).toMatchSnapshot();
+ });
+});
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown/UserMenu.jsx b/src/containers/CourseHeader/AuthenticatedUserDropdown/UserMenu.jsx
new file mode 100644
index 0000000..2c28c3a
--- /dev/null
+++ b/src/containers/CourseHeader/AuthenticatedUserDropdown/UserMenu.jsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+import { getConfig } from '@edx/frontend-platform';
+import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
+import { Dropdown } from '@edx/paragon';
+
+import messages from '../messages';
+
+export class UserMenu extends React.Component {
+ menuItem(href, message) {
+ return (
+
+ {this.props.intl.formatMessage(message)}
+
+ );
+ }
+
+ render() {
+ const { username } = this.props;
+ const { LMS_BASE_URL, LOGOUT_URL } = getConfig();
+ return (
+
+ {this.menuItem(`${LMS_BASE_URL}/dashboard`, messages.dashboard)}
+ {this.menuItem(`${LMS_BASE_URL}/u/${username}`, messages.profile)}
+ {this.menuItem(`${LMS_BASE_URL}/account/settings`, messages.account)}
+ {this.menuItem(LOGOUT_URL, messages.signOut)}
+
+ );
+ }
+}
+
+UserMenu.propTypes = {
+ intl: intlShape.isRequired,
+ username: PropTypes.string.isRequired,
+};
+
+UserMenu.defaultProps = {};
+
+export default injectIntl(UserMenu);
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown/UserMenu.test.jsx b/src/containers/CourseHeader/AuthenticatedUserDropdown/UserMenu.test.jsx
new file mode 100644
index 0000000..7b00a28
--- /dev/null
+++ b/src/containers/CourseHeader/AuthenticatedUserDropdown/UserMenu.test.jsx
@@ -0,0 +1,37 @@
+import React from 'react';
+import { shallow } from 'enzyme';
+
+import { AuthenticatedUserDropdown } from './AuthenticatedUserDropdown';
+
+jest.mock('@edx/frontend-platform', () => ({
+ getConfig: () => ({
+ LMS_BASE_URL: '',
+ LOGOUT_URL: '',
+ SUPPORT_URL: '',
+ }),
+}));
+jest.mock('@edx/paragon', () => {
+ const Dropdown = () => 'Dropdown';
+ Dropdown.Toggle = () => 'Dropdown.Toggle';
+ Dropdown.Menu = () => 'Dropdown.Menu';
+ Dropdown.Item = () => 'Dropdown.Item';
+ return { Dropdown };
+});
+jest.mock('@fortawesome/react-fontawesome', () => ({
+ FontAwesomeIcon: () => 'FontAwesomeIcon',
+}));
+jest.mock('@fortawesome/free-solid-svg-icons', () => ({
+ faUserCircle: 'fa-user-circle-icon',
+}));
+
+describe('Header AuthenticatedUserDropdown component', () => {
+ const props = {
+ intl: { formatMessage: (msg) => msg.defaultMessage },
+ username: 'test-username',
+ };
+ test('snapshot', () => {
+ expect(
+ shallow(),
+ ).toMatchSnapshot();
+ });
+});
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown/__snapshots__/UserAvatar.test.jsx.snap b/src/containers/CourseHeader/AuthenticatedUserDropdown/__snapshots__/UserAvatar.test.jsx.snap
new file mode 100644
index 0000000..9737821
--- /dev/null
+++ b/src/containers/CourseHeader/AuthenticatedUserDropdown/__snapshots__/UserAvatar.test.jsx.snap
@@ -0,0 +1,31 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Header AuthenticatedUserDropdown UserAvatar component snapshot 1`] = `
+
+
+
+ test-username
+
+
+`;
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown/__snapshots__/index.test.jsx.snap b/src/containers/CourseHeader/AuthenticatedUserDropdown/__snapshots__/index.test.jsx.snap
new file mode 100644
index 0000000..769a582
--- /dev/null
+++ b/src/containers/CourseHeader/AuthenticatedUserDropdown/__snapshots__/index.test.jsx.snap
@@ -0,0 +1,20 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Header AuthenticatedUserDropdown component snapshot 1`] = `
+
+
+ Help
+
+
+
+
+
+
+`;
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown/index.jsx b/src/containers/CourseHeader/AuthenticatedUserDropdown/index.jsx
new file mode 100644
index 0000000..f74bcb3
--- /dev/null
+++ b/src/containers/CourseHeader/AuthenticatedUserDropdown/index.jsx
@@ -0,0 +1,38 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { faUserCircle } from '@fortawesome/free-solid-svg-icons';
+
+import { getConfig } from '@edx/frontend-platform';
+import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
+import { Dropdown } from '@edx/paragon';
+
+import UserMenu from './UserMenu';
+import UserAvatar from './UserAvatar';
+
+import messages from '../messages';
+
+export const AuthenticatedUserDropdown = ({
+ intl,
+ username,
+}) => (
+ <>
+
+ {intl.formatMessage(messages.help)}
+
+
+
+
+
+ >
+);
+
+AuthenticatedUserDropdown.propTypes = {
+ intl: intlShape.isRequired,
+ username: PropTypes.string.isRequired,
+};
+
+AuthenticatedUserDropdown.defaultProps = {};
+
+export default injectIntl(AuthenticatedUserDropdown);
diff --git a/src/containers/CourseHeader/AuthenticatedUserDropdown/index.test.jsx b/src/containers/CourseHeader/AuthenticatedUserDropdown/index.test.jsx
new file mode 100644
index 0000000..5e1dc71
--- /dev/null
+++ b/src/containers/CourseHeader/AuthenticatedUserDropdown/index.test.jsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import { shallow } from 'enzyme';
+
+import { AuthenticatedUserDropdown } from '.';
+
+jest.mock('@edx/frontend-platform', () => ({
+ getConfig: () => ({
+ SUPPORT_URL: '',
+ }),
+}));
+jest.mock('@edx/paragon', () => ({
+ Dropdown: () => 'Dropdown',
+}));
+jest.mock('./UserAvatar', () => 'UserAvatar');
+jest.mock('./UserMenu', () => 'UserMenu');
+
+describe('Header AuthenticatedUserDropdown component', () => {
+ const props = {
+ intl: { formatMessage: (msg) => msg.defaultMessage },
+ username: 'test-username',
+ };
+ test('snapshot', () => {
+ expect(
+ shallow(),
+ ).toMatchSnapshot();
+ });
+});
diff --git a/src/containers/CourseHeader/CourseLabel.jsx b/src/containers/CourseHeader/CourseLabel.jsx
new file mode 100644
index 0000000..e946a72
--- /dev/null
+++ b/src/containers/CourseHeader/CourseLabel.jsx
@@ -0,0 +1,32 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+export const CourseLabel = ({
+ courseOrg,
+ courseNumber,
+ courseTitle,
+}) => (
+
+
+ {courseOrg} {courseNumber}
+
+
+ {courseTitle}
+
+
+);
+CourseLabel.propTypes = {
+ courseOrg: PropTypes.string,
+ courseNumber: PropTypes.string,
+ courseTitle: PropTypes.string,
+};
+CourseLabel.defaultProps = {
+ courseOrg: null,
+ courseNumber: null,
+ courseTitle: null,
+};
+
+export default CourseLabel;
diff --git a/src/containers/CourseHeader/CourseLabel.test.jsx b/src/containers/CourseHeader/CourseLabel.test.jsx
new file mode 100644
index 0000000..1c774cb
--- /dev/null
+++ b/src/containers/CourseHeader/CourseLabel.test.jsx
@@ -0,0 +1,18 @@
+import React from 'react';
+import { shallow } from 'enzyme';
+
+import CourseLabel from './CourseLabel';
+
+const courseData = {
+ courseOrg: 'course-org',
+ courseNumber: 'course-number',
+ courseTitle: 'course-title',
+};
+
+describe('Header CourseLabel component', () => {
+ test('snapshot', () => {
+ expect(
+ shallow(),
+ ).toMatchSnapshot();
+ });
+});
diff --git a/src/containers/CourseHeader/Header.jsx b/src/containers/CourseHeader/Header.jsx
index 7dac9b7..afcc76f 100644
--- a/src/containers/CourseHeader/Header.jsx
+++ b/src/containers/CourseHeader/Header.jsx
@@ -1,81 +1,47 @@
import React, { useContext } from 'react';
import PropTypes from 'prop-types';
-import { getConfig } from '@edx/frontend-platform';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import { AppContext } from '@edx/frontend-platform/react';
import AnonymousUserMenu from './AnonymousUserMenu';
import AuthenticatedUserDropdown from './AuthenticatedUserDropdown';
+import LinkedLogo from './LinkedLogo';
+import CourseLabel from './CourseLabel';
+
import messages from './messages';
-function LinkedLogo({
- href,
- src,
- alt,
- ...attributes
-}) {
- return (
-
-
-
- );
-}
-
-LinkedLogo.propTypes = {
- href: PropTypes.string.isRequired,
- src: PropTypes.string.isRequired,
- alt: PropTypes.string.isRequired,
-};
-
-function Header({
- courseOrg, courseNumber, courseTitle, intl, showUserDropdown,
-}) {
+export const Header = ({
+ courseOrg,
+ courseNumber,
+ courseTitle,
+ intl,
+}) => {
const { authenticatedUser } = useContext(AppContext);
-
- let headerLogo = (
-
- );
-
return (
);
-}
-
+};
Header.propTypes = {
courseOrg: PropTypes.string,
courseNumber: PropTypes.string,
courseTitle: PropTypes.string,
intl: intlShape.isRequired,
- showUserDropdown: PropTypes.bool,
};
-
Header.defaultProps = {
courseOrg: null,
courseNumber: null,
courseTitle: null,
- showUserDropdown: true,
};
export default injectIntl(Header);
diff --git a/src/containers/CourseHeader/Header.test.jsx b/src/containers/CourseHeader/Header.test.jsx
index 2889aa7..935443e 100644
--- a/src/containers/CourseHeader/Header.test.jsx
+++ b/src/containers/CourseHeader/Header.test.jsx
@@ -1,29 +1,38 @@
import React from 'react';
-import {
- authenticatedUser, initializeMockApp, render, screen,
-} from '../setupTest';
-import { Header } from './index';
+import { shallow } from 'enzyme';
-describe('Header', () => {
- beforeAll(async () => {
- // We need to mock AuthService to implicitly use `getAuthenticatedUser` within `AppContext.Provider`.
- await initializeMockApp();
+import { AppContext } from '@edx/frontend-platform/react';
+import { Header } from './Header';
+
+jest.mock('./AnonymousUserMenu', () => 'AnonymousUserMenu');
+jest.mock('./AuthenticatedUserDropdown', () => 'AuthenticatedUserDropdown');
+jest.mock('./LinkedLogo', () => 'LinkedLogo');
+jest.mock('./CourseLabel', () => 'CourseLabel');
+
+jest.mock('@edx/frontend-platform/react', () => ({
+ AppContext: { authenticatedUser: null },
+}));
+jest.mock('react', () => ({
+ ...jest.requireActual('react'),
+ useContext: (context) => context,
+}));
+
+const courseData = {
+ courseOrg: 'course-org',
+ courseNumber: 'course-number',
+ courseTitle: 'course-title',
+};
+
+describe('Header component', () => {
+ const props = {
+ ...courseData,
+ intl: { formatMessage: (msg) => msg.defaultMessage },
+ };
+ test('snapshot', () => {
+ expect(shallow()).toMatchSnapshot();
});
-
- it('displays user button', () => {
- render();
- expect(screen.getByRole('button')).toHaveTextContent(authenticatedUser.username);
- });
-
- it('displays course data', () => {
- const courseData = {
- courseOrg: 'course-org',
- courseNumber: 'course-number',
- courseTitle: 'course-title',
- };
- render();
-
- expect(screen.getByText(`${courseData.courseOrg} ${courseData.courseNumber}`)).toBeInTheDocument();
- expect(screen.getByText(courseData.courseTitle)).toBeInTheDocument();
+ test('snapshot with authenticatedUser', () => {
+ AppContext.authenticatedUser = { username: 'test' };
+ expect(shallow()).toMatchSnapshot();
});
});
diff --git a/src/containers/CourseHeader/LinkedLogo.jsx b/src/containers/CourseHeader/LinkedLogo.jsx
new file mode 100644
index 0000000..f385602
--- /dev/null
+++ b/src/containers/CourseHeader/LinkedLogo.jsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import { getConfig } from '@edx/frontend-platform';
+
+const LinkedLogo = () => (
+
+
+
+);
+
+export default LinkedLogo;
diff --git a/src/containers/CourseHeader/LinkedLogo.test.jsx b/src/containers/CourseHeader/LinkedLogo.test.jsx
new file mode 100644
index 0000000..19592bc
--- /dev/null
+++ b/src/containers/CourseHeader/LinkedLogo.test.jsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { shallow } from 'enzyme';
+
+import LinkedLogo from './LinkedLogo';
+
+jest.mock('@edx/frontend-platform', () => ({
+ getConfig: () => ({
+ LMS_BASE_URL: '',
+ LOGO_URL: '',
+ SITE_NAME: '',
+ }),
+}));
+
+describe('Header CourseLabel component', () => {
+ test('snapshot', () => {
+ expect(
+ shallow(),
+ ).toMatchSnapshot();
+ });
+});
diff --git a/src/containers/CourseHeader/__snapshots__/AnonymousUserMenu.test.jsx.snap b/src/containers/CourseHeader/__snapshots__/AnonymousUserMenu.test.jsx.snap
new file mode 100644
index 0000000..e042921
--- /dev/null
+++ b/src/containers/CourseHeader/__snapshots__/AnonymousUserMenu.test.jsx.snap
@@ -0,0 +1,19 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Header AnonymousUserMenu component snapshot 1`] = `
+
+
+
+
+`;
diff --git a/src/containers/CourseHeader/__snapshots__/CourseLabel.test.jsx.snap b/src/containers/CourseHeader/__snapshots__/CourseLabel.test.jsx.snap
new file mode 100644
index 0000000..fdf9dd0
--- /dev/null
+++ b/src/containers/CourseHeader/__snapshots__/CourseLabel.test.jsx.snap
@@ -0,0 +1,25 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Header CourseLabel component snapshot 1`] = `
+
+
+ course-org
+
+ course-number
+
+
+ course-title
+
+
+`;
diff --git a/src/containers/CourseHeader/__snapshots__/Header.test.jsx.snap b/src/containers/CourseHeader/__snapshots__/Header.test.jsx.snap
new file mode 100644
index 0000000..57a5c72
--- /dev/null
+++ b/src/containers/CourseHeader/__snapshots__/Header.test.jsx.snap
@@ -0,0 +1,51 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Header component snapshot 1`] = `
+
+`;
+
+exports[`Header component snapshot with authenticatedUser 1`] = `
+
+`;
diff --git a/src/containers/CourseHeader/__snapshots__/LinkedLogo.test.jsx.snap b/src/containers/CourseHeader/__snapshots__/LinkedLogo.test.jsx.snap
new file mode 100644
index 0000000..c26dda8
--- /dev/null
+++ b/src/containers/CourseHeader/__snapshots__/LinkedLogo.test.jsx.snap
@@ -0,0 +1,14 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Header CourseLabel component snapshot 1`] = `
+
+
+
+`;
diff --git a/src/containers/CourseHeader/messages.js b/src/containers/CourseHeader/messages.js
index 0750159..e35d61a 100644
--- a/src/containers/CourseHeader/messages.js
+++ b/src/containers/CourseHeader/messages.js
@@ -1,6 +1,11 @@
import { defineMessages } from '@edx/frontend-platform/i18n';
const messages = defineMessages({
+ courseMaterial: {
+ id: 'learn.navigation.course.tabs.label',
+ defaultMessage: 'Course Material',
+ description: 'The accessible label for course tabs navigation',
+ },
dashboard: {
id: 'header.menu.dashboard.label',
defaultMessage: 'Dashboard',
@@ -21,6 +26,11 @@ const messages = defineMessages({
defaultMessage: 'Account',
description: 'The text for the user menu Account navigation link.',
},
+ orderHistory: {
+ id: 'header.menu.orderHistory.label',
+ defaultMessage: 'Order History',
+ description: 'The text for the user menu Order History navigation link.',
+ },
skipNavLink: {
id: 'header.navigation.skipNavLink',
defaultMessage: 'Skip to main content.',