summaryrefslogtreecommitdiffstats
path: root/openecomp-ui/test/nfvo-components
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-ui/test/nfvo-components')
-rw-r--r--openecomp-ui/test/nfvo-components/SubmitErrorResponse.test.js33
-rw-r--r--openecomp-ui/test/nfvo-components/__snapshots__/storyshots.test.js.snap686
-rw-r--r--openecomp-ui/test/nfvo-components/activity-log/ActivityLog.test.js89
-rw-r--r--openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js52
-rw-r--r--openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js85
-rw-r--r--openecomp-ui/test/nfvo-components/input/validation/input.test.js141
-rw-r--r--openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js60
-rw-r--r--openecomp-ui/test/nfvo-components/modal/globalModal.test.js92
-rw-r--r--openecomp-ui/test/nfvo-components/notifications/notificationsModal.test.js144
-rw-r--r--openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js145
-rw-r--r--openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js132
-rw-r--r--openecomp-ui/test/nfvo-components/storyshots.test.js2
12 files changed, 1342 insertions, 319 deletions
diff --git a/openecomp-ui/test/nfvo-components/SubmitErrorResponse.test.js b/openecomp-ui/test/nfvo-components/SubmitErrorResponse.test.js
new file mode 100644
index 0000000000..7231fe4abc
--- /dev/null
+++ b/openecomp-ui/test/nfvo-components/SubmitErrorResponse.test.js
@@ -0,0 +1,33 @@
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
+
+import SubmitErrorResponse from 'nfvo-components/SubmitErrorResponse.jsx';
+import {SubmitErrorMessageFactory} from 'test-utils/factories/SubnitErrorMessageFactorie.js';
+
+describe('SubmitErrorResponse test: ', function () {
+ it('basic render test', () => {
+ let props = {
+ validationResponse: SubmitErrorMessageFactory.build()
+ };
+
+ let view = TestUtils.renderIntoDocument(<SubmitErrorResponse {...props} />);
+ expect(view).toBeTruthy();
+ });
+});
diff --git a/openecomp-ui/test/nfvo-components/__snapshots__/storyshots.test.js.snap b/openecomp-ui/test/nfvo-components/__snapshots__/storyshots.test.js.snap
new file mode 100644
index 0000000000..f7df9763da
--- /dev/null
+++ b/openecomp-ui/test/nfvo-components/__snapshots__/storyshots.test.js.snap
@@ -0,0 +1,686 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Storyshots ListEditor regular 1`] = `
+<div
+ className="list-editor-view"
+>
+ <div
+ className="list-editor-view-header"
+ >
+ <div
+ className="list-editor-view-title"
+ >
+ List Editor
+ </div>
+ <div
+ className="list-editor-view-add-controller"
+ />
+ </div>
+ <div
+ className="list-editor-view-list-scroller"
+ >
+ <div
+ className="list-editor-view-list"
+ >
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+`;
+
+exports[`Storyshots ListEditor two columns 1`] = `
+<div
+ className="list-editor-view"
+>
+ <div
+ className="list-editor-view-header"
+ >
+ <div
+ className="list-editor-view-title"
+ >
+ List Editor
+ </div>
+ <div
+ className="list-editor-view-add-controller"
+ />
+ </div>
+ <div
+ className="list-editor-view-list-scroller"
+ >
+ <div
+ className="list-editor-view-list two-columns"
+ >
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+`;
+
+exports[`Storyshots ListEditor with add 1`] = `
+<div
+ className="list-editor-view"
+>
+ <div
+ className="list-editor-view-header"
+ >
+ <div
+ className="list-editor-view-title"
+ >
+ List Editor
+ </div>
+ <div
+ className="list-editor-view-add-controller"
+ >
+ <div
+ className="list-editor-view-add-title"
+ data-test-id="add-button"
+ onClick={[Function]}
+ >
+ <span>
+ + Add
+ </span>
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-view-list-scroller"
+ >
+ <div
+ className="list-editor-view-list two-columns"
+ >
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+`;
+
+exports[`Storyshots ListEditor with delete 1`] = `
+<div
+ className="list-editor-view"
+>
+ <div
+ className="list-editor-view-header"
+ >
+ <div
+ className="list-editor-view-title"
+ >
+ List Editor
+ </div>
+ <div
+ className="list-editor-view-add-controller"
+ >
+ <div
+ className="list-editor-view-add-title"
+ data-test-id="add-button"
+ onClick={[Function]}
+ >
+ <span>
+ + Add
+ </span>
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-view-list-scroller"
+ >
+ <div
+ className="list-editor-view-list two-columns"
+ >
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-controller"
+ >
+ <div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ >
+ <svg
+ className="svg-icon trash-o "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-controller"
+ >
+ <div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ >
+ <svg
+ className="svg-icon trash-o "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+`;
+
+exports[`Storyshots ListEditor with edit 1`] = `
+<div
+ className="list-editor-view"
+>
+ <div
+ className="list-editor-view-header"
+ >
+ <div
+ className="list-editor-view-title"
+ >
+ List Editor
+ </div>
+ <div
+ className="list-editor-view-add-controller"
+ >
+ <div
+ className="list-editor-view-add-title"
+ data-test-id="add-button"
+ onClick={[Function]}
+ >
+ <span>
+ + Add
+ </span>
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-view-list-scroller"
+ >
+ <div
+ className="list-editor-view-list two-columns"
+ >
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-controller"
+ >
+ <div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ >
+ <svg
+ className="svg-icon sliders "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-controller"
+ >
+ <div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ >
+ <svg
+ className="svg-icon sliders "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+`;
+
+exports[`Storyshots ListEditor with edit and delete 1`] = `
+<div
+ className="list-editor-view"
+>
+ <div
+ className="list-editor-view-header"
+ >
+ <div
+ className="list-editor-view-title"
+ >
+ List Editor
+ </div>
+ <div
+ className="list-editor-view-add-controller"
+ >
+ <div
+ className="list-editor-view-add-title"
+ data-test-id="add-button"
+ onClick={[Function]}
+ >
+ <span>
+ + Add
+ </span>
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-view-list-scroller"
+ >
+ <div
+ className="list-editor-view-list two-columns"
+ >
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-controller"
+ >
+ <div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ >
+ <svg
+ className="svg-icon sliders "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+ </div>
+ <div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ >
+ <svg
+ className="svg-icon trash-o "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view"
+ data-test-id="list-editor-item"
+ >
+ <div
+ className="list-editor-item-view-content"
+ onClick={undefined}
+ >
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-field"
+ >
+ <div>
+ Lorum Ipsum
+ </div>
+ </div>
+ </div>
+ <div
+ className="list-editor-item-view-controller"
+ >
+ <div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ >
+ <svg
+ className="svg-icon sliders "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+ </div>
+ <div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ >
+ <svg
+ className="svg-icon trash-o "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+`;
+
+exports[`Storyshots SVGIcon icon 1`] = `
+<div
+ className="svg-icon-wrapper bottom"
+ onClick={undefined}
+ style={
+ Object {
+ "fill": "",
+ }
+ }
+>
+ <svg
+ className="svg-icon locked "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+</div>
+`;
+
+exports[`Storyshots SVGIcon icon with label 1`] = `
+<div
+ className="svg-icon-wrapper bottom"
+ onClick={undefined}
+ style={
+ Object {
+ "fill": "",
+ }
+ }
+>
+ <svg
+ className="svg-icon locked "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+ <span
+ className="svg-icon-label "
+ >
+ locked
+ </span>
+</div>
+`;
+
+exports[`Storyshots SVGIcon locked clickable 1`] = `
+<div
+ className="svg-icon-wrapper clickable bottom"
+ onClick={[Function]}
+ style={
+ Object {
+ "fill": "",
+ }
+ }
+>
+ <svg
+ className="svg-icon locked "
+ >
+ <use
+ xlinkHref="test-file-stub"
+ />
+ </svg>
+
+</div>
+`;
diff --git a/openecomp-ui/test/nfvo-components/activity-log/ActivityLog.test.js b/openecomp-ui/test/nfvo-components/activity-log/ActivityLog.test.js
new file mode 100644
index 0000000000..2f377a3539
--- /dev/null
+++ b/openecomp-ui/test/nfvo-components/activity-log/ActivityLog.test.js
@@ -0,0 +1,89 @@
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+import React from 'react';
+import {mount} from 'enzyme';
+import {cloneAndSet} from 'test-utils/Util.js';
+import ActivityLogView, {ActivityListItem} from 'nfvo-components/activity-log/ActivityLogView.jsx';
+import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx';
+import ActivityLogActionHelper from 'nfvo-components/activity-log/ActivityLogActionHelper.js';
+import {mapStateToProps} from 'nfvo-components/activity-log/ActivityLog.js';
+import {storeCreator} from 'sdc-app/AppStore.js';
+import mockRest from 'test-utils/MockRest.js';
+import {ActivityLogStoreFactory} from 'test-utils/factories/activity-log/ActivityLogFactories.js';
+import VersionControllerUtilsFactory from 'test-utils/factories/softwareProduct/VersionControllerUtilsFactory.js';
+
+describe('Activity Log Module Tests', function () {
+ const LICENSE_MODEL_ID = '555';
+ const version = VersionControllerUtilsFactory.build().version;
+
+ it('mapStateToProps mapper exists', () => {
+ expect(mapStateToProps).toBeTruthy();
+ });
+
+ it('Loads Activity Log and renders into jsx', () => {
+ const store = storeCreator();
+ const dispatch = store.dispatch;
+ let ActivityLogList = ActivityLogStoreFactory.buildList(1);
+ const expectedStore = cloneAndSet(store.getState(), 'licenseModel.activityLog', ActivityLogList);
+
+ mockRest.addHandler('fetch', ({data, options, baseUrl}) => {
+ expect(baseUrl).toEqual(`/onboarding-api/v1.0/activity-logs/${LICENSE_MODEL_ID}/versions/${version.id}`);
+ expect(data).toEqual(undefined);
+ expect(options).toEqual(undefined);
+ return {results: ActivityLogList};
+ });
+
+ return ActivityLogActionHelper.fetchActivityLog(dispatch, {itemId: LICENSE_MODEL_ID, versionId: version.id}).then(() => {
+ const state = store.getState();
+ expect(state).toEqual(expectedStore);
+ const props = mapStateToProps(state);
+ expect(props.activities).toEqual(ActivityLogList);
+ const wrapper = mount(<ActivityLogView {...props}/>);
+ expect(wrapper).toBeTruthy();
+ });
+ });
+
+ it('Tests Activity Log filter and sorting abilities', () => {
+ const firstDate = new Date();
+ const secondDate = new Date();
+ secondDate.setDate(firstDate.getDate() - 1);
+
+ const firstTimestamp = firstDate.getTime();
+ const secondTimestamp = secondDate.getTime();
+
+ let firstActivity = ActivityLogStoreFactory.build({user: 'first', timestamp: firstTimestamp});
+ let secondActivity = ActivityLogStoreFactory.build({user: 'second', timestamp: secondTimestamp, status: {success: false, message: 'error'}});
+ let props = mapStateToProps({licenseModel: {activityLog: [firstActivity, secondActivity]}});
+ const wrapper = mount(<ActivityLogView {...props}/>);
+ expect(wrapper.find(ActivityListItem).length).toEqual(3); // Includes Header component
+
+ const firstInstance = wrapper.find(ActivityListItem).at(1);
+ const firstInstanceProps = firstInstance.props();
+ expect(firstInstanceProps.activity.timestamp).toEqual(secondTimestamp); // Default sorting is descending
+
+ const header = wrapper.find(ActivityListItem).at(0);
+ header.props().onSort();
+ const newFirstInstance = wrapper.find(ActivityListItem).at(1);
+ const newFirstInstanceProps = newFirstInstance.props();
+ expect(newFirstInstanceProps.activity.timestamp).toEqual(firstTimestamp);
+
+ const listEditor = wrapper.find(ListEditorView);
+ listEditor.props().onFilter('second');
+ expect(wrapper.find(ActivityListItem).length).toEqual(2);
+ expect(wrapper.find(ActivityListItem).at(1).props().activity.user).toEqual('second');
+ });
+});
diff --git a/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js b/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js
new file mode 100644
index 0000000000..e61261e09a
--- /dev/null
+++ b/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js
@@ -0,0 +1,52 @@
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
+import TabulatedEditor from 'nfvo-components/editor/TabulatedEditor.jsx';
+
+describe('Tabulated Editor test: ', function () {
+
+ it('basic view test', () => {
+ let renderer = TestUtils.createRenderer();
+ renderer.render(
+ <TabulatedEditor><button>test</button></TabulatedEditor>
+ );
+ let renderedOutput = renderer.getRenderOutput();
+ expect(renderedOutput).toBeTruthy();
+
+ });
+
+ it('handle func test', () => {
+ let props = {
+ navigationBarProps: {
+ groups: [],
+ onNavigationItemClick: ()=>{}
+ },
+ versionControllerProps: {
+ isCheckedOut: false,
+ version: {id: '0.1', label: '0.1'},
+ viewableVersions: [{id: '0.1', label: '0.1'}],
+ onSubmit: ()=>{},
+ onRevert: ()=>{}
+ }
+ };
+ const view = TestUtils.renderIntoDocument(<TabulatedEditor {...props}><button>test</button></TabulatedEditor>);
+ expect(view).toBeTruthy();
+ });
+
+});
diff --git a/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js b/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js
index eaa06eedf4..c578178d35 100644
--- a/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js
+++ b/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js
@@ -1,24 +1,19 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
*/
-import expect from 'expect';
import React from 'react';
import TestUtils from 'react-addons-test-utils';
import DualListboxView from 'nfvo-components/input/dualListbox/DualListboxView.jsx';
@@ -32,42 +27,62 @@ describe('dualListBox Module Tests', function () {
var renderer = TestUtils.createRenderer();
renderer.render(<DualListboxView onChange={()=>{}}/>);
var renderedOutput = renderer.getRenderOutput();
- expect(renderedOutput).toExist();
+ expect(renderedOutput).toBeTruthy();
});
it('should render with available list and 4 control buttons', () => {
var view = TestUtils.renderIntoDocument(<DualListboxView availableList={ITEMS} onChange={()=>{}}/>);
- expect(view).toExist();
+ expect(view).toBeTruthy();
var results = TestUtils.scryRenderedDOMComponentsWithClass(view, 'dual-list-option');
expect(results.length).toBe(4);
});
it('should add item to selected list', done => {
- const newItemValue = 'new item';
- let onChange = (value)=> {
- expect(value).toEqual(newItemValue);
+ const onChange = (values)=> {
+ expect(values).toEqual([ITEMS[2].id, ITEMS[0].id]);
done();
};
- var view = new DualListboxView({availableList:ITEMS, onChange, selectedValuesList:[]});
- expect(view).toExist();
- view.refs = {
- availableValues: {getValue(){return newItemValue;}}
- };
- view.addToSelectedList();
+ const document = TestUtils.renderIntoDocument(
+ <DualListboxView
+ availableList={ITEMS}
+ onChange={onChange}
+ selectedValuesList={[ITEMS[2].id]}/>);
+
+ const result = TestUtils.scryRenderedDOMComponentsWithTag(document, 'select');
+ const options = TestUtils.scryRenderedDOMComponentsWithTag(document, 'option');
+ const listBox = TestUtils.findRenderedComponentWithType(document, DualListboxView);
+ expect(result).toBeTruthy();
+ expect(options).toBeTruthy();
+ expect(listBox).toBeTruthy();
+
+ TestUtils.Simulate.change(result[0], {target: {selectedOptions: [options[0]]}});
+ expect(listBox.state.selectedValues).toEqual([ITEMS[0].id]);
+
+ listBox.addToSelectedList();
});
it('should remove item from selected list', done => {
- const selectedValuesList = ['a','b'];
- let onChange = (value)=> {
- expect(value).toEqual(selectedValuesList[1]);
+ const onChange = (values)=> {
+ expect(values).toEqual([ITEMS[0].id]);
done();
};
- var view = new DualListboxView({availableList:ITEMS, onChange, selectedValuesList});
- expect(view).toExist();
- view.refs = {
- selectedValues: {getValue(){return ['a'];}}
- };
- view.removeFromSelectedList();
+ const document = TestUtils.renderIntoDocument(
+ <DualListboxView
+ availableList={ITEMS}
+ onChange={onChange}
+ selectedValuesList={[ITEMS[0].id, ITEMS[1].id]}/>);
+
+ const result = TestUtils.scryRenderedDOMComponentsWithTag(document, 'select');
+ const options = TestUtils.scryRenderedDOMComponentsWithTag(document, 'option');
+ const listBox = TestUtils.findRenderedComponentWithType(document, DualListboxView);
+ expect(result).toBeTruthy();
+ expect(options).toBeTruthy();
+ expect(listBox).toBeTruthy();
+
+ TestUtils.Simulate.change(result[1], {target: {selectedOptions: [options[2]]}});
+ expect(listBox.state.selectedValues).toEqual([ITEMS[1].id]);
+
+ listBox.removeFromSelectedList();
});
it('should add all items to selected list', done => {
@@ -76,7 +91,7 @@ describe('dualListBox Module Tests', function () {
done();
};
var view = new DualListboxView({availableList:ITEMS, onChange, selectedValuesList:[]});
- expect(view).toExist();
+ expect(view).toBeTruthy();
view.addAllToSelectedList();
});
@@ -86,7 +101,7 @@ describe('dualListBox Module Tests', function () {
done();
};
var view = new DualListboxView({availableList:ITEMS, onChange, selectedValuesList:[]});
- expect(view).toExist();
+ expect(view).toBeTruthy();
view.removeAllFromSelectedList();
});
diff --git a/openecomp-ui/test/nfvo-components/input/validation/input.test.js b/openecomp-ui/test/nfvo-components/input/validation/input.test.js
new file mode 100644
index 0000000000..7743483603
--- /dev/null
+++ b/openecomp-ui/test/nfvo-components/input/validation/input.test.js
@@ -0,0 +1,141 @@
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
+import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
+import Input from 'nfvo-components/input/validation/Input.jsx';
+import Overlay from 'react-bootstrap/lib/Overlay.js';
+
+describe('Input', function () {
+ it('should render with type text', () => {
+ let renderedOutput = TestUtils.renderIntoDocument(<Input type='text' data-test-id='mytest' />);
+ const elem = scryRenderedDOMComponentsWithTestId(renderedOutput,'mytest');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ expect(elem[0].type).toBe('text');
+ });
+
+ it('should render with type textarea', () => {
+ let renderedOutput = TestUtils.renderIntoDocument(<Input type='textarea' data-test-id='mytest' />);
+ const elem = scryRenderedDOMComponentsWithTestId(renderedOutput,'mytest');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ expect(elem[0].tagName.toLowerCase()).toBe('textarea');
+ });
+
+ it('should render with type radio', () => {
+ let renderedOutput = TestUtils.renderIntoDocument(<Input type='radio' data-test-id='mytest' />);
+ const elem = scryRenderedDOMComponentsWithTestId(renderedOutput,'mytest');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ expect(elem[0].type).toBe('radio');
+ });
+
+ it('should render with type select', () => {
+ let renderedOutput = TestUtils.renderIntoDocument(<Input type='select' data-test-id='mytest' />);
+ const elem = scryRenderedDOMComponentsWithTestId(renderedOutput,'mytest');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ expect(elem[0].tagName.toLowerCase()).toBe('select');
+ });
+
+ it('should render with type number', () => {
+ let renderedOutput = TestUtils.renderIntoDocument(<Input type='number' data-test-id='mytest' />);
+ const elem = scryRenderedDOMComponentsWithTestId(renderedOutput,'mytest');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ expect(elem[0].tagName.toLowerCase()).toBe('input');
+ expect(elem[0].type).toBe('number');
+ });
+
+ it('should render with type checkbox', () => {
+ let renderedOutput = TestUtils.renderIntoDocument(<Input type='checkbox' data-test-id='mytest' />);
+ const elem = scryRenderedDOMComponentsWithTestId(renderedOutput,'mytest');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ expect(elem[0].tagName.toLowerCase()).toBe('input');
+ expect(elem[0].type).toBe('checkbox');
+ });
+
+ it('should render error overlay when invalid', () => {
+ let renderedOutput = TestUtils.renderIntoDocument(<Input type='text' data-test-id='mytest' isValid={false} errorText='this is an error'/>);
+ const elem = TestUtils.findRenderedComponentWithType(renderedOutput,Overlay);
+ expect(elem).toBeTruthy();
+ expect(elem.props.show).toBe(true);
+ });
+
+ it('should not render error overlay when valid', () => {
+ let renderedOutput = TestUtils.renderIntoDocument(<Input type='text' data-test-id='mytest' isValid={true} errorText='this is an error'/>);
+ const elem = TestUtils.findRenderedComponentWithType(renderedOutput,Overlay);
+ expect(elem).toBeTruthy();
+ expect(elem.props.show).toBe(false);
+ });
+
+ /*it('should return the value of a select', () => {
+
+ });
+
+ it('should return the value of a checkbox', () => {
+
+ });
+
+ it('should return the value of a radio', () => {
+
+ });
+
+ it('should return the value of a text', () => {
+
+ });
+
+ it('should return the value of a textarea', () => {
+
+ });*/
+
+ /*it('should render and work as a group', () => {
+ let MockComp = React.createClass({
+ render: function() {
+ return (<div>
+ <Input type='radio' data-test-id='mytest' name='g1' value='0'/><Input type='radio' data-test-id='mytest1' name='g1' value='1' />
+ </div>);
+ }
+ });
+ let renderedOutput = TestUtils.renderIntoDocument(<MockComp />);
+ const radio1 = scryRenderedDOMComponentsWithTestId(renderedOutput,'mytest');
+ expect(radio1).toBeTruthy();
+ expect(radio1.length).toBe(1);
+ expect(radio1[0].type).toBe('radio');
+ expect(radio1[0].value).toBe('0');
+ const radio2 = scryRenderedDOMComponentsWithTestId(renderedOutput,'mytest1');
+ expect(radio2).toBeTruthy();
+ expect(radio2.length).toBe(1);
+ expect(radio2[0].type).toBe('radio');
+ expect(radio2[0].value).toBe('1');
+ TestUtils.Simulate.click(
+ radio2[0]
+ );
+ TestUtils.Simulate.click(
+ radio1[0]
+ );
+ console.log('radio1: ' + radio1[0].checked);
+ console.log('radio2: ' + radio2[0].checked);
+ expect(radio2[0].checked).toBe(false);
+ expect(radio1[0].checked).toBe(true);
+
+
+ });*/
+
+});
diff --git a/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js b/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js
index a3b098f611..c1f823c3fc 100644
--- a/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js
+++ b/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js
@@ -1,25 +1,21 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
*/
-import expect from 'expect';
import React from 'react';
+import {mount} from 'enzyme';
import TestUtils from 'react-addons-test-utils';
import ListEditorView from 'src/nfvo-components/listEditor/ListEditorView.jsx';
import ListEditorItemView from 'src/nfvo-components/listEditor/ListEditorItemView.jsx';
@@ -28,11 +24,11 @@ describe('listEditor Module Tests', function () {
it('list editor view should exist', () => {
- expect(ListEditorView).toExist();
+ expect(ListEditorView).toBeTruthy();
});
it('list editor item view should exist', () => {
- expect(ListEditorItemView).toExist();
+ expect(ListEditorItemView).toBeTruthy();
});
it('should render list and list item and call onEdit', done => {
@@ -43,22 +39,18 @@ describe('listEditor Module Tests', function () {
</ListEditorItemView>
</ListEditorView>
);
- expect(itemView).toExist();
- let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'fa-sliders');
+ expect(itemView).toBeTruthy();
+ let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'sliders');
TestUtils.Simulate.click(sliderIcon);
});
- it('should render list and list item and call onFilter', done => {
- let itemView = TestUtils.renderIntoDocument(
- <ListEditorView onFilter={()=>{done();}}>
- <ListEditorItemView>
- <div></div>
- </ListEditorItemView>
- </ListEditorView>
+ it('should render list and list item and call onFilter', () => {
+ let itemView = mount(
+ <ListEditorView onFilter={()=>{}} children={[(<ListEditorItemView key='id'/>)]} />
);
- expect(itemView).toExist();
- let filterInput = TestUtils.findRenderedDOMComponentWithTag(itemView, 'input');
- TestUtils.Simulate.change(filterInput);
+ expect(itemView).toBeTruthy();
+ let inputComponent = itemView.find('ExpandableInput');
+ expect(inputComponent.length).toBe(1);
});
it('should render READONLY list item and not call onEdit', done => {
@@ -67,8 +59,8 @@ describe('listEditor Module Tests', function () {
<div></div>
</ListEditorItemView>
);
- expect(itemView).toExist();
- let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'fa-sliders');
+ expect(itemView).toBeTruthy();
+ let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'sliders');
TestUtils.Simulate.click(sliderIcon);
});
@@ -78,8 +70,8 @@ describe('listEditor Module Tests', function () {
<div></div>
</ListEditorItemView>
);
- expect(itemView).toExist();
- let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'fa-trash-o');
+ expect(itemView).toBeTruthy();
+ let sliderIcon = TestUtils.findRenderedDOMComponentWithClass(itemView, 'trash-o');
TestUtils.Simulate.click(sliderIcon);
});
@@ -89,8 +81,8 @@ describe('listEditor Module Tests', function () {
<div></div>
</ListEditorItemView>
);
- expect(itemView).toExist();
- let sliderIcon = TestUtils.scryRenderedDOMComponentsWithClass(itemView, 'fa-trash-o');
- expect(sliderIcon).toEqual(0);
+ expect(itemView).toBeTruthy();
+ let trashIcon = TestUtils.scryRenderedDOMComponentsWithClass(itemView, 'fa-trash-o');
+ expect(trashIcon).toEqual([]);
});
});
diff --git a/openecomp-ui/test/nfvo-components/modal/globalModal.test.js b/openecomp-ui/test/nfvo-components/modal/globalModal.test.js
new file mode 100644
index 0000000000..efe43b6c37
--- /dev/null
+++ b/openecomp-ui/test/nfvo-components/modal/globalModal.test.js
@@ -0,0 +1,92 @@
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+import GlobalModal, {GlobalModalView, mapStateToProps} from 'src/nfvo-components/modal/GlobalModal.js';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
+import store from 'sdc-app/AppStore.js';
+import {actionTypes, typeEnum} from 'src/nfvo-components/modal/GlobalModalConstants.js';
+
+const title = 'TITLE';
+const msg = 'message';
+
+describe('Global Modal tests: ', function () {
+ it (' mapStateToProps exists', function () {
+ expect(mapStateToProps).toBeTruthy();
+ });
+
+ it ('mapStateToProps should return show as true', () => {
+ let state = {
+ modal: {
+ type: ''
+ }
+ };
+ let props = mapStateToProps(state);
+ expect(props.show).toEqual(true);
+ });
+
+ it('modal should show with default values', () => {
+ store.dispatch({
+ type: actionTypes.GLOBAL_MODAL_SHOW,
+ data: {
+ title,
+ msg
+ }
+ });
+ const modal = store.getState().modal;
+ expect(modal).toBeTruthy();
+ expect(modal.title).toBe(title);
+ expect(modal.msg).toBe(msg);
+ });
+
+ it('global modal should show with type success with connected component', () => {
+ store.dispatch({type: actionTypes.GLOBAL_MODAL_SHOW, data: {title, msg}});
+
+ expect(store.getState().modal).toBeTruthy();
+
+ let renderer = TestUtils.createRenderer();
+ renderer.render(<GlobalModal store={store}/>);
+ let renderedOutput = renderer.getRenderOutput();
+ expect(renderedOutput).toBeTruthy();
+
+ });
+
+
+ it('global modal should show with type success with connected component and closed after', () => {
+ store.dispatch({type: actionTypes.GLOBAL_MODAL_SHOW, data: {title, msg}});
+
+ expect(store.getState().modal).toBeTruthy();
+
+ let renderer = TestUtils.createRenderer();
+ renderer.render(<GlobalModal store={store}/>);
+ let renderedOutput = renderer.getRenderOutput();
+ expect(renderedOutput).toBeTruthy();
+
+ store.dispatch({type: actionTypes.GLOBAL_MODAL_CLOSE});
+ expect(store.getState().modal).toBe(null);
+ });
+
+
+ it('checking component default render', ()=> {
+ expect(window.document).toBeTruthy();
+ let globalModalView = TestUtils.renderIntoDocument(
+ <GlobalModalView show={true} type={typeEnum.WARNING} title={title} msg={msg} onDeclined={()=>{}} />
+ );
+ expect(globalModalView).toBeTruthy();
+ });
+
+});
+
diff --git a/openecomp-ui/test/nfvo-components/notifications/notificationsModal.test.js b/openecomp-ui/test/nfvo-components/notifications/notificationsModal.test.js
deleted file mode 100644
index f84d38246d..0000000000
--- a/openecomp-ui/test/nfvo-components/notifications/notificationsModal.test.js
+++ /dev/null
@@ -1,144 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-import expect from 'expect';
-import React from 'react';
-import TestUtils from 'react-addons-test-utils';
-import store from 'sdc-app/AppStore.js';
-import ConnectedNotificationModal, {NotificationModal} from 'nfvo-components/notifications/NotificationModal.jsx';
-import NotificationConstants from 'nfvo-components/notifications/NotificationConstants.js';
-
-const title = 'test title';
-const msg = 'test msg';
-
-describe('Notification Modal Mapper and View Class: ', function () {
-
- it('notification should show with type error', done => {
- store.dispatch({type: NotificationConstants.NOTIFY_ERROR, data: {title, msg}});
- setTimeout(()=> {
- expect(store.getState().notification).toExist();
- expect(store.getState().notification.type).toBe('error');
- done();
- }, 0);
- });
-
- it('notification should show with type default', done => {
- store.dispatch({type: NotificationConstants.NOTIFY_INFO, data: {title, msg}});
- setTimeout(()=> {
- expect(store.getState().notification).toExist();
- expect(store.getState().notification.type).toBe('default');
- done();
- }, 0);
- });
-
- it('notification should show with type warning', done => {
- store.dispatch({type: NotificationConstants.NOTIFY_WARNING, data: {title, msg}});
- setTimeout(()=> {
- expect(store.getState().notification).toExist();
- expect(store.getState().notification.type).toBe('warning');
- done();
- }, 0);
- });
-
- it('notification should show with type success', done => {
- store.dispatch({type: NotificationConstants.NOTIFY_SUCCESS, data: {title, msg}});
- setTimeout(()=> {
- expect(store.getState().notification).toExist();
- expect(store.getState().notification.type).toBe('success');
- done();
- }, 0);
- });
-
- it('notification should show with type success with connected component', done => {
- store.dispatch({type: NotificationConstants.NOTIFY_SUCCESS, data: {title, msg}});
- setTimeout(()=> {
- expect(store.getState().notification).toExist();
- expect(store.getState().notification.type).toBe('success');
- let renderer = TestUtils.createRenderer();
- renderer.render(<ConnectedNotificationModal store={store}/>);
- let renderedOutput = renderer.getRenderOutput();
- expect(renderedOutput).toExist();
- done();
- }, 0);
- });
-
- it('notification should hide with connected component', done => {
- setTimeout(()=> {
- expect(store.getState().notification).toNotExist();
- let renderer = TestUtils.createRenderer();
- renderer.render(<ConnectedNotificationModal store={store}/>);
- let renderedOutput = renderer.getRenderOutput();
- expect(renderedOutput).toExist();
- done();
- }, 0);
- store.dispatch({type: NotificationConstants.NOTIFY_CLOSE});
- });
-
- it('notification should hide', done => {
- store.dispatch({type: NotificationConstants.NOTIFY_CLOSE});
- setTimeout(()=> {
- expect(store.getState().notification).toNotExist();
- done();
- }, 0);
- });
-
- it('NotificationModal should not render', ()=> {
- let renderer = TestUtils.createRenderer();
- renderer.render(<NotificationModal show={false} title={title} msg={msg} type='error'/>);
- let renderedOutput = renderer.getRenderOutput();
- expect(renderedOutput).toExist();
- });
-
- it('NotificationModal basic default render', ()=> {
- expect(window.document).toExist();
- let document = TestUtils.renderIntoDocument(
- <NotificationModal show={true} title={title} msg={msg} type='default' onCloseClick={()=>{}}/>
- );
- var result = TestUtils.findAllInRenderedTree(document, element => element.props.className === 'notification-modal primary');
- expect(result.length).toBeGreaterThan(0);
- });
-
- it('NotificationModal basic error render', ()=> {
- expect(window.document).toExist();
- let document = TestUtils.renderIntoDocument(
- <NotificationModal show={true} title={title} msg={msg} type='error' onCloseClick={()=>{}}/>
- );
- var result = TestUtils.findAllInRenderedTree(document, element => element.props.className === 'notification-modal danger');
- expect(result.length).toBeGreaterThan(0);
- });
-
- it('NotificationModal basic warning render', ()=> {
- expect(window.document).toExist();
- let document = TestUtils.renderIntoDocument(
- <NotificationModal show={true} title={title} msg={msg} type='warning' onCloseClick={()=>{}}/>
- );
- var result = TestUtils.findAllInRenderedTree(document, element => element.props.className === 'notification-modal warning');
- expect(result.length).toBeGreaterThan(0);
- });
-
- it('NotificationModal basic success render', ()=> {
- expect(window.document).toExist();
- let document = TestUtils.renderIntoDocument(
- <NotificationModal show={true} title={title} msg={msg} type='success' onCloseClick={()=>{}}/>
- );
- var result = TestUtils.findAllInRenderedTree(document, element => element.props.className === 'notification-modal success');
- expect(result.length).toBeGreaterThan(0);
- });
-});
diff --git a/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js b/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js
index 9ab18137cf..8f2b7e7e88 100644
--- a/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js
+++ b/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js
@@ -1,43 +1,152 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
*/
-import expect from 'expect';
+
import React from 'react';
+
import TestUtils from 'react-addons-test-utils';
+import {mount} from 'enzyme';
import VersionController from 'nfvo-components/panel/versionController/VersionController.jsx';
-import {actionsEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
+import {actionsEnum, statusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
+import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
+import {VSPComponentsVersionControllerFactory} from 'test-utils/factories/softwareProduct/SoftwareProductComponentsNetworkFactories.js';
describe('versionController UI Component', () => {
+ let onSave, onClose, onVersionSwitching = onSave = onClose = () => {return Promise.resolve();};
+ const versionData = VSPComponentsVersionControllerFactory.build();
+ const isFormDataValid = true;
+ const viewableVersions = versionData.viewableVersions;
+ const version = versionData.version;
+ const props = {onSave, onClose, isFormDataValid, viewableVersions, version, onVersionSwitching};
it('function does exist', () => {
var renderer = TestUtils.createRenderer();
- renderer.render(<VersionController isCheckedOut={false} status={'OUT'} />);
+ renderer.render(<VersionController isCheckedOut={false} status={statusEnum.CHECK_OUT_STATUS} {...props} />);
var renderedOutput = renderer.getRenderOutput();
- expect(renderedOutput).toExist();
+ expect(renderedOutput).toBeTruthy();
});
it('validating checkin function', () => {
-
- let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={false} status={'OUT'} onSave={()=>{return Promise.resolve();}}/>);
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={true} status={statusEnum.CHECK_OUT_STATUS} {...props} />);
let cb = action => expect(action).toBe(actionsEnum.CHECK_IN);
versionController.checkin(cb);
+ });
+
+ it('validating checkout function', () => {
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={false} status={statusEnum.CHECK_IN_STATUS} {...props} />);
+ let cb = action => expect(action).toBe(actionsEnum.CHECK_OUT);
+ versionController.checkout(cb);
+ });
+
+ it('validating submit function', () => {
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={false} status={statusEnum.CHECK_IN_STATUS} {...props} />);
+ let cb = action => expect(action).toBe(actionsEnum.SUBMIT);
+ versionController.submit(cb);
+ });
+
+ it('validating revert function', () => {
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={true} status={statusEnum.CHECK_OUT_STATUS} {...props} />);
+ let cb = action => expect(action).toBe(actionsEnum.UNDO_CHECK_OUT);
+ versionController.revertCheckout(cb);
+ });
+
+ it('does not show the save button when no onSave available', () => {
+ let noSaveProps = {...props, onSave: null };
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={true} status={statusEnum.CHECK_OUT_STATUS} {...noSaveProps} />);
+ let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-save-btn');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(0);
+ });
+
+ it('does not show the submit button when no callVCAction available', () => {
+ let callVCActionProps = {...props, callVCAction: null};
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={false} status={statusEnum.CHECK_IN_STATUS} {...callVCActionProps} />);
+ let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-submit-btn');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(0);
+ });
+
+ it('does not show the revert button when no callVCAction available', () => {
+ let callVCActionProps = {...props, callVCAction: null};
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={true} status={statusEnum.CHECK_OUT_STATUS} {...callVCActionProps} />);
+ let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-revert-btn');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(0);
+ });
+
+ it('Shows the save button when onSave available', () => {
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={true} status={statusEnum.CHECK_OUT_STATUS} {...props} />);
+ let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-save-btn');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ });
+
+ it('Shows the submit button when callVCAction available', () => {
+ let callVCActionProps = { ...props, callVCAction: function(){} };
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={false} status={statusEnum.CHECK_IN_STATUS} {...callVCActionProps} />);
+ let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-submit-btn');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ });
+
+ it('Shows the revert button when callVCAction available', () => {
+ let callVCActionProps = { ...props, callVCAction: function(){} };
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={true} status={statusEnum.CHECK_OUT_STATUS} {...callVCActionProps} />);
+ let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-revert-btn');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ });
+
+ it('Shows the checkin button', () => {
+ let callVCActionProps = { ...props, callVCAction: function(){} };
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={true} status={statusEnum.CHECK_OUT_STATUS} {...callVCActionProps} />);
+ let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-checkout-btn');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ });
+
+ it('Shows the checkout button', () => {
+ let callVCActionProps = { ...props, callVCAction: function(){} };
+ let versionController = TestUtils.renderIntoDocument(<VersionController isCheckedOut={false} status={statusEnum.CHECK_IN_STATUS} {...callVCActionProps} />);
+ let elem = scryRenderedDOMComponentsWithTestId(versionController,'vc-checkout-btn');
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+
+ });
+
+ it('Doesn\'t show the checkin button for prev version', () => {
+ let callVCActionProps = { ...props, version: '1.0', callVCAction: function(){} };
+ let versionController = mount(<VersionController isCheckedOut={true} status={statusEnum.CHECK_OUT_STATUS} {...callVCActionProps} />);
+ let elem = versionController.find('[data-test-id="vc-checkout-btn"]');
+ let svgIcon = versionController.find('.version-controller-lock-closed');
+
+ expect(elem).toBeTruthy();
+ expect(elem.length).toEqual(1);
+ expect(svgIcon.hasClass('disabled')).toBe(true);
+ });
+
+ it('Doesn\'t show the checkout button', () => {
+ let callVCActionProps = { ...props, version: '1.0', callVCAction: function(){} };
+ let versionController = mount(<VersionController isCheckedOut={false} status={statusEnum.CHECK_IN_STATUS} {...callVCActionProps} />);
+ let elem = versionController.find('[data-test-id="vc-checkout-btn"]');
+ let svgIcon = versionController.find('.version-controller-lock-closed');
+
+ expect(elem).toBeTruthy();
+ expect(elem.length).toBe(1);
+ expect(svgIcon.hasClass('disabled')).toBe(true);
});
diff --git a/openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js b/openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js
index 0e4a92118e..d654e16ddf 100644
--- a/openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js
+++ b/openecomp-ui/test/nfvo-components/panel/VersionController/versionControllerUtils.test.js
@@ -1,41 +1,38 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
+/*!
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
*/
-import expect from 'expect';
-import deepFreeze from 'deep-freeze';
+
import Configuration from 'sdc-app/config/Configuration.js';
import VersionControllerUtils from 'nfvo-components/panel/versionController/VersionControllerUtils.js';
import {statusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
+import VersionControllerUtilsFactory from 'test-utils/factories/softwareProduct/VersionControllerUtilsFactory.js';
const status = 'testStatus';
+const {lockingUser: currentUser, viewableVersions: defaultVersions} = VersionControllerUtilsFactory.build();
describe('versionController UI Component', () => {
it('function does exist', () => {
- expect(VersionControllerUtils).toExist();
+ expect(VersionControllerUtils).toBeTruthy();
});
it('validating getCheckOutStatusKindByUserID - without "UserID"', () => {
var result = VersionControllerUtils.getCheckOutStatusKindByUserID(status);
expect(result.status).toBe(status);
- expect(result.isCheckedOut).toBe(true);
+ expect(result.isCheckedOut).toBe(false);
});
it('validating getCheckOutStatusKindByUserID - without "UserID" with locking user', () => {
@@ -45,12 +42,11 @@ describe('versionController UI Component', () => {
});
it('validating getCheckOutStatusKindByUserID - with "UserID" with configuration set', () => {
- const userId = 'att';
-
- Configuration.set('ATTUserID', userId);
- var result = VersionControllerUtils.getCheckOutStatusKindByUserID(status, userId);
- Configuration.set('ATTUserID', undefined);
+ const Uid = 'ecomp';
+ Configuration.set('UserID', Uid);
+ var result = VersionControllerUtils.getCheckOutStatusKindByUserID(status, Uid);
+ Configuration.set('UserID', undefined);
expect(result.status).toBe(status);
expect(result.isCheckedOut).toBe(true);
});
@@ -58,48 +54,31 @@ describe('versionController UI Component', () => {
it('validating isCheckedOutByCurrentUser - when resource is not checked out', () => {
- const currentUser = 'current';
- const resource = deepFreeze({
- version: '0.6',
- viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'],
- status: 'Final'
- });
-
- Configuration.set('ATTUserID', currentUser);
+ const resource = VersionControllerUtilsFactory.build({status: statusEnum.SUBMIT_STATUS});
+
+ Configuration.set('UserID', currentUser);
const result = VersionControllerUtils.isCheckedOutByCurrentUser(resource);
- Configuration.set('ATTUserID', undefined);
+ Configuration.set('UserID', undefined);
expect(result).toBe(false);
});
it('validating isCheckedOutByCurrentUser - when resource is checked out', () => {
- const currentUser = 'current';
- const resource = deepFreeze({
- version: '0.6',
- viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'],
- status: 'Locked',
- lockingUser: 'current'
- });
-
- Configuration.set('ATTUserID', currentUser);
+ const resource = VersionControllerUtilsFactory.build();
+
+ Configuration.set('UserID', currentUser);
const result = VersionControllerUtils.isCheckedOutByCurrentUser(resource);
- Configuration.set('ATTUserID', undefined);
+ Configuration.set('UserID', undefined);
expect(result).toBe(true);
});
it('validating isCheckedOutByCurrentUser - when resource is checked out by another user', () => {
- const currentUser = 'current';
- const resource = deepFreeze({
- version: '0.6',
- viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'],
- status: 'Locked',
- lockingUser: 'another'
- });
-
- Configuration.set('ATTUserID', currentUser);
+ const resource = VersionControllerUtilsFactory.build({lockingUser: 'another'});
+
+ Configuration.set('UserID', currentUser);
const result = VersionControllerUtils.isCheckedOutByCurrentUser(resource);
- Configuration.set('ATTUserID', undefined);
+ Configuration.set('UserID', undefined);
expect(result).toBe(false);
});
@@ -107,66 +86,43 @@ describe('versionController UI Component', () => {
it('validating isReadOnly - when resource is not checked out', () => {
- const currentUser = 'current';
- const resource = deepFreeze({
- version: '0.6',
- viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'],
- status: 'Final'
- });
-
- Configuration.set('ATTUserID', currentUser);
+ const resource = VersionControllerUtilsFactory.build({status: statusEnum.SUBMIT_STATUS});
+
+ Configuration.set('UserID', currentUser);
const result = VersionControllerUtils.isReadOnly(resource);
- Configuration.set('ATTUserID', undefined);
+ Configuration.set('UserID', undefined);
expect(result).toBe(true);
});
it('validating isReadOnly - when resource is checked out', () => {
- const currentUser = 'current';
- const resource = deepFreeze({
- version: '0.6',
- viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'],
- status: 'Locked',
- lockingUser: 'current'
- });
-
- Configuration.set('ATTUserID', currentUser);
+ const resource = VersionControllerUtilsFactory.build();
+
+ Configuration.set('UserID', currentUser);
const result = VersionControllerUtils.isReadOnly(resource);
- Configuration.set('ATTUserID', undefined);
+ Configuration.set('UserID', undefined);
expect(result).toBe(false);
});
it('validating isReadOnly - when version of resource is not latest', () => {
- const currentUser = 'current';
- const resource = deepFreeze({
- version: '0.2',
- viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'],
- status: 'Locked',
- lockingUser: 'current'
- });
-
- Configuration.set('ATTUserID', currentUser);
+
+ const resource = VersionControllerUtilsFactory.build({version: defaultVersions[defaultVersions.length - 2]});
+
+ Configuration.set('UserID', currentUser);
const result = VersionControllerUtils.isReadOnly(resource);
- Configuration.set('ATTUserID', undefined);
+ Configuration.set('UserID', undefined);
expect(result).toBe(true);
});
it('validating isReadOnly - when resource is checked out by another user', () => {
- const currentUser = 'current';
- const resource = deepFreeze({
- version: '0.6',
- viewableVersions: ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6'],
- status: 'Locked',
- lockingUser: 'another'
- });
-
- Configuration.set('ATTUserID', currentUser);
+ const resource = VersionControllerUtilsFactory.build({lockingUser: 'another'});
+
+ Configuration.set('UserID', currentUser);
const result = VersionControllerUtils.isReadOnly(resource);
- Configuration.set('ATTUserID', undefined);
+ Configuration.set('UserID', undefined);
expect(result).toBe(true);
});
});
-
diff --git a/openecomp-ui/test/nfvo-components/storyshots.test.js b/openecomp-ui/test/nfvo-components/storyshots.test.js
new file mode 100644
index 0000000000..4d1bdbede0
--- /dev/null
+++ b/openecomp-ui/test/nfvo-components/storyshots.test.js
@@ -0,0 +1,2 @@
+import initStoryshots from 'storyshots';
+initStoryshots(); \ No newline at end of file