From 5c895880681996aaab2cd90cfc46457062f62190 Mon Sep 17 00:00:00 2001 From: lalli-flores Date: Fri, 22 Nov 2019 17:16:32 -0800 Subject: [PATCH] feat(WebexMeetingControls): implement HOC --- .../WebexMeetingControls.js | 20 +++++++++++++++++++ .../WebexMeetingControls.test.js | 16 +++++++++++++++ .../WebexMeetingControls.test.js.snap | 11 ++++++++++ src/components/index.js | 1 + 4 files changed, 48 insertions(+) create mode 100644 src/components/WebexMeetingControl/WebexMeetingControls.js create mode 100644 src/components/WebexMeetingControl/WebexMeetingControls.test.js create mode 100644 src/components/WebexMeetingControl/__snapshots__/WebexMeetingControls.test.js.snap diff --git a/src/components/WebexMeetingControl/WebexMeetingControls.js b/src/components/WebexMeetingControl/WebexMeetingControls.js new file mode 100644 index 000000000..6884875ed --- /dev/null +++ b/src/components/WebexMeetingControl/WebexMeetingControls.js @@ -0,0 +1,20 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +export const MeetingContext = React.createContext(); + +/** + * WebexMeetingControls is a higher-order component that pass a meeting + * context to several WebexMeetingControl components. + * + * @param {object} props + * @returns {object} JSX of the component + */ +export default function WebexMeetingControls({meetingID, children}) { + return {children}; +} + +WebexMeetingControls.propTypes = { + meetingID: PropTypes.string.isRequired, + children: PropTypes.node.isRequired, +}; diff --git a/src/components/WebexMeetingControl/WebexMeetingControls.test.js b/src/components/WebexMeetingControl/WebexMeetingControls.test.js new file mode 100644 index 000000000..ca93fc378 --- /dev/null +++ b/src/components/WebexMeetingControl/WebexMeetingControls.test.js @@ -0,0 +1,16 @@ +import React from 'react'; + +import WebexMeetingControls from './WebexMeetingControls'; + +describe('Webex Meeting Controls component', () => { + test('matches snapshot', () => { + const meetingID = 'my-meeting'; + const component = shallow( + +
+ + ); + + expect(component).toMatchSnapshot(); + }); +}); diff --git a/src/components/WebexMeetingControl/__snapshots__/WebexMeetingControls.test.js.snap b/src/components/WebexMeetingControl/__snapshots__/WebexMeetingControls.test.js.snap new file mode 100644 index 000000000..484cb8bcb --- /dev/null +++ b/src/components/WebexMeetingControl/__snapshots__/WebexMeetingControls.test.js.snap @@ -0,0 +1,11 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Webex Meeting Controls component matches snapshot 1`] = ` + +
+ +`; diff --git a/src/components/index.js b/src/components/index.js index b578b4314..7b277ee54 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -3,4 +3,5 @@ export {default as WebexActivity} from './WebexActivity/WebexActivity'; export {default as WebexActivityStream} from './WebexActivityStream/WebexActivityStream'; export {default as WebexDataProvider, AdapterContext} from './WebexDataProvider/WebexDataProvider'; export {default as WebexLocalMedia} from './WebexLocalMedia/WebexLocalMedia'; +export {default as WebexMeetingControls, MeetingContext} from './WebexMeetingControl/WebexMeetingControls'; export {default as WebexMeetingInfo} from './WebexMeetingInfo/WebexMeetingInfo';