Add unit test

Add unit tests to improve code coverage.

Issue-ID: CLAMP-844
Change-Id: I7792212d476103086e063cf8fe4a9abed1294fd6
Signed-off-by: xuegao <xg353y@intl.att.com>
diff --git a/ui-react/src/components/dialogs/Loop/CreateLoopModal.test.js b/ui-react/src/components/dialogs/Loop/CreateLoopModal.test.js
new file mode 100644
index 0000000..18ec6fd
--- /dev/null
+++ b/ui-react/src/components/dialogs/Loop/CreateLoopModal.test.js
@@ -0,0 +1,137 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2020 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 React from 'react';
+import { shallow } from 'enzyme';
+import CreateLoopModal from './CreateLoopModal';
+import LoopService from '../../../api/LoopService';
+import TemplateService from '../../../api/TemplateService';
+
+describe('Verify CreateLoopModal', () => {
+
+  it('Test the render method', async () => {
+	const flushPromises = () => new Promise(setImmediate);
+    TemplateService.getTemplateNames = jest.fn().mockImplementation(() => {
+    	return Promise.resolve(["template1","template2"]);
+	});
+	
+	const component = shallow(<CreateLoopModal/>);
+    expect(component).toMatchSnapshot();
+	await flushPromises();
+	component.update();
+		
+    expect(component.state('templateNames')).toStrictEqual([{"label": "template1", "value": "template1"}, {"label": "template2", "value": "template2"}]);
+  });
+
+  it('handleDropdownListChange event', async () => {
+  	const flushPromises = () => new Promise(setImmediate);
+    const event = {value: 'template1'};
+    TemplateService.getBlueprintMicroServiceTemplateSvg = jest.fn().mockImplementation(() => {
+		return Promise.resolve("");
+	});
+
+    const component = shallow(<CreateLoopModal/>);
+    component.find('StateManager').simulate('change', event);
+    await flushPromises();
+    component.update();
+    expect(component.state('chosenTemplateName')).toEqual("template1");
+    expect(component.state('content')).toEqual("Error1");
+    
+    TemplateService.getBlueprintMicroServiceTemplateSvg = jest.fn().mockImplementation(() => {
+		return Promise.resolve("svgContentTest");
+	});
+	component.find('StateManager').simulate('change', {value: 'template2'});
+    await flushPromises();
+    component.update();
+    expect(component.state('chosenTemplateName')).toEqual("template2");
+    expect(component.state('content')).toEqual("svgContentTest");
+  });
+
+
+
+  it('handleModelName event', () => {
+    const event = {target: {value : "model1"} };
+    const component = shallow(<CreateLoopModal/>);
+    component.find('input').simulate('change', event);
+    component.update();
+    expect(component.state('modelName')).toEqual("model1");
+  });
+
+
+  it('Test handleClose', () => {
+    const historyMock = { push: jest.fn() }; 
+    const handleClose = jest.spyOn(CreateLoopModal.prototype,'handleClose');
+    const component = shallow(<CreateLoopModal history={historyMock} />)
+
+    component.find('[variant="secondary"]').prop('onClick')();
+
+    expect(handleClose).toHaveBeenCalledTimes(1);
+    expect(component.state('show')).toEqual(false);
+    expect(historyMock.push.mock.calls[0]).toEqual([ '/']);
+    
+    handleClose.mockClear();
+  });
+
+  it('Test handleCreate Fail', () => {
+    const handleCreate = jest.spyOn(CreateLoopModal.prototype,'handleCreate');
+    const component = shallow(<CreateLoopModal/>)
+
+    component.find('[variant="primary"]').prop('onClick')();
+
+    expect(handleCreate).toHaveBeenCalledTimes(1);
+    expect(component.state('show')).toEqual(true);
+
+    handleCreate.mockClear();
+  });
+
+  it('Test handleCreate Suc', async () => {
+	const flushPromises = () => new Promise(setImmediate);
+    const historyMock = { push: jest.fn() };
+    const loadLoopFunction = jest.fn();  
+    
+    LoopService.createLoop = jest.fn().mockImplementation(() => {
+			return Promise.resolve({
+				ok: true,
+				status: 200,
+				json: () => {}
+			});
+		});
+
+    const handleCreate = jest.spyOn(CreateLoopModal.prototype,'handleCreate');
+    const component = shallow(<CreateLoopModal history={historyMock} loadLoopFunction={loadLoopFunction}/>)
+    component.setState({
+			modelName: "modelNameTest",
+			chosenTemplateName: "template1"
+		});
+
+    component.find('[variant="primary"]').prop('onClick')();
+	await flushPromises();
+	component.update();
+
+    expect(handleCreate).toHaveBeenCalledTimes(1);
+    expect(component.state('show')).toEqual(false);
+    expect(historyMock.push.mock.calls[0]).toEqual([ '/']);
+
+    handleCreate.mockClear();
+  });
+
+});