Refresh option in validation result page

Issue-ID: SDC-2585
Co-authored-by: nikhil.soni@vodafone.com
Signed-off-by: atulpurohit <atul.purohit1@vodafone.com>
Change-Id: I78f1385d219837c300cb33aff82b7459f137babb
Signed-off-by: atulpurohit <atul.purohit1@vodafone.com>
diff --git a/openecomp-ui/test/softwareProduct/validation/SoftwareProductValidationActionHelper.test.js b/openecomp-ui/test/softwareProduct/validation/SoftwareProductValidationActionHelper.test.js
index 0a8f640..3be1d68 100644
--- a/openecomp-ui/test/softwareProduct/validation/SoftwareProductValidationActionHelper.test.js
+++ b/openecomp-ui/test/softwareProduct/validation/SoftwareProductValidationActionHelper.test.js
@@ -24,12 +24,14 @@
 
 import { VSPComplianceCheckedFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
 import { VSPCertificationCheckedFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
+import { VSPTestResultKeysFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
 import { VSPChecksFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
 import { VSPTestsMapFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
 import { VSPTestsRequestFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
 import { VSPGeneralInfoFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
 import { VSPTestResultsSuccessFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
 import { mapActionsToProps } from 'sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidation.js';
+import { VSPTestRequestFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
 
 describe('Software Product Validation Action Helper Tests', function() {
     const store = storeCreator();
@@ -45,8 +47,10 @@
     const generalInfo = VSPGeneralInfoFactory.build();
     const isValidationDisabled = false;
     const vspTestResults = VSPTestResultsSuccessFactory.build();
+    const testResultKeys = VSPTestResultKeysFactory.build();
     let restPrefix = Configuration.get('restPrefix');
     let onClose = () => {};
+    const vspTestRequest = VSPTestRequestFactory.build();
 
     const modal = {
         type: 'error',
@@ -91,28 +95,50 @@
             });
     });
 
-    // it('Software Products Validation Action Helper : post test', () => {
-    //     mockRest.addHandler('post', ({ options, data, baseUrl }) => {
-    //         expect(baseUrl).toEqual(
-    //             `${restPrefix}/v1.0/externaltesting/executions`
-    //         );
-    //         //expect(data).toEqual(testsRequest);
-    //         expect(options).toEqual(undefined);
-    //         return { vspTestResults: vspTestResults };
-    //     });
-    //     const version = {
-    //         id: 12345,
-    //         name: 1
-    //     };
-    //     const softwareProductId = '1234';
-    //     const status = 'draft';
-    //     mapActionsToProps(store.dispatch).onTestSubmit(
-    //         softwareProductId,
-    //         version,
-    //         status,
-    //         testsRequest
-    //     );
-    // });
+    it('Software Products Validation Action Helper : post test', () => {
+
+        const str = storeCreator({
+            softwareProduct: {
+                softwareProductValidation: {
+                    testResultKeys: testResultKeys.testResultKeys
+                }
+             }
+         });
+         deepFreeze(str.getState());
+         let expectedStore = cloneAndSet(
+            str.getState(),
+            'softwareProduct.softwareProductValidation.vspTestResults',
+            vspTestResults.vspTestResults
+        );
+        const version = {
+            id: 12345,
+             name: 1
+         };
+         const requestId = "1"
+         const softwareProductId = '1234';
+         const status = 'success';
+         mockRest.addHandler('post', ({ options, data, baseUrl }) => {
+            expect(baseUrl).toEqual(
+                  `${restPrefix}/v1.0/externaltesting/executions?vspId=${softwareProductId}&vspVersionId=${version.id}&requestId=${requestId}`
+              );
+             return    vspTestResults.vspTestResults  ;
+         });
+          SoftwareProductValidationActionHelper.navigateToSoftwareProductValidationResults(
+              str.dispatch,{
+              softwareProductId: softwareProductId,
+              version: version,
+              status: status,
+              tests :vspTestRequest.vspTestRequest,
+              requestId: requestId
+              }
+          ).then(() => {
+             expect(str.getState()).toEqual(expectedStore);
+            })
+            .catch((e) => {
+                console.log('Executions test returned Error');
+            });
+
+       });
 
     it('Software Products Validation Action Helper : setCertificationChecked', () => {
         let expectedStore = cloneAndSet(
diff --git a/openecomp-ui/test/softwareProduct/validation/SoftwareProductValidationInputView.test.js b/openecomp-ui/test/softwareProduct/validation/SoftwareProductValidationInputView.test.js
index 68a8cdd..c66cf91 100644
--- a/openecomp-ui/test/softwareProduct/validation/SoftwareProductValidationInputView.test.js
+++ b/openecomp-ui/test/softwareProduct/validation/SoftwareProductValidationInputView.test.js
@@ -112,5 +112,9 @@
         );
         expect(inputForm).toBeTruthy();
         TestUtils.Simulate.submit(inputForm);
+        let result = TestUtils.scryRenderedDOMComponentsWithTag(vspValidationInputView, 'input');
+        expect(result).toBeTruthy();
+        expect(result.length).toBeTruthy();
+        TestUtils.Simulate.change(result[0]);
     });
 });
diff --git a/openecomp-ui/test/softwareProduct/validationResults/SoftwareProductValidationResultsView.test.js b/openecomp-ui/test/softwareProduct/validationResults/SoftwareProductValidationResultsView.test.js
index 67e9fcf..8bd3779 100644
--- a/openecomp-ui/test/softwareProduct/validationResults/SoftwareProductValidationResultsView.test.js
+++ b/openecomp-ui/test/softwareProduct/validationResults/SoftwareProductValidationResultsView.test.js
@@ -18,64 +18,93 @@
 import { mapStateToProps } from 'sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResults.js';
 import SoftwareProductValidationResultsView from 'sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsView.jsx';
 import { VSPTestResultsSuccessFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
+import { VSPTestResultKeysFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
 import { VSPTestResultsFailureFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
 import { VSPTestsMapFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
+import { VSPChecksFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
 
 import TestUtils from 'react-dom/test-utils';
 
 describe('SoftwareProductValidationResults Mapper and View Classes', () => {
-    it('mapStateToProps mapper exists', () => {
+     it('mapStateToProps mapper exists', () => {
         expect(mapStateToProps).toBeTruthy();
     });
 
     it('mapStateToProps fail data test', () => {
         const vspTestResults = VSPTestResultsFailureFactory.build();
         const vspTestsMap = VSPTestsMapFactory.build();
-
+        const testResultKeys = VSPTestResultKeysFactory.build();
+        const version = {
+            name: 1
+        };
+        const softwareProductId = '1234';
+        var testResultToDisplay = {};
+        var vspIdAndVer = softwareProductId+version.name;
+        testResultToDisplay[vspIdAndVer] = vspTestResults.vspTestResults;
+        var testResultKeyByVspId = {};
+       testResultKeyByVspId[vspIdAndVer] = testResultKeys.testResultKeys;
         var obj = {
             softwareProduct: {
                 softwareProductValidation: {
-                    vspTestResults: vspTestResults.vspTestResults,
-                    vspTestsMap: vspTestsMap.vspTestsMap
+                       testResultKeys: testResultKeys.testResultKeys
+                },
+                softwareProductValidationResult: {
+                    testResultToDisplay: testResultToDisplay,
                 }
             }
         };
         var results = mapStateToProps(obj);
-        expect(results.softwareProductValidation.vspTestResults).toBeTruthy();
+        expect(results.softwareProductValidationResult.testResultToDisplay[vspIdAndVer]).toBeTruthy();
     });
 
-    it('mapStateToProps success data test', () => {
+     it('mapStateToProps success data test', () => {
         const vspTestResults = VSPTestResultsSuccessFactory.build();
         const vspTestsMap = VSPTestsMapFactory.build();
-
+        const vspChecksList = VSPChecksFactory.build();
         var obj = {
             softwareProduct: {
                 softwareProductValidation: {
+                },
+                softwareProductValidationResult: {
                     vspTestResults: vspTestResults.vspTestResults,
-                    vspTestsMap: vspTestsMap.vspTestsMap
+                    vspChecks: vspChecksList,
+                    refreshValidationResults: []
                 }
             }
         };
         var results = mapStateToProps(obj);
-        expect(results.softwareProductValidation.vspTestResults).toBeTruthy();
+        expect(results.softwareProductValidationResult.vspTestResults).toBeTruthy();
     });
 
     it('SoftwareProductValidationResultsView test fail render test', () => {
         const vspTestResults = VSPTestResultsFailureFactory.build();
         const vspTestsMap = VSPTestsMapFactory.build();
+        const testResultKeys = VSPTestResultKeysFactory.build();
+        const vspChecksList = VSPChecksFactory.build();
 
         const version = {
             name: 1
         };
         const softwareProductId = '1234';
-        var obj = {
-            softwareProductId: softwareProductId,
-            version: version,
-            softwareProductValidation: {
-                vspTestResults: vspTestResults.vspTestResults,
-                vspTestsMap: vspTestsMap.vspTestsMap
-            }
-        };
+        var testResultToDisplay = {};
+        var vspIdAndVer = softwareProductId+version.name;
+        testResultToDisplay[vspIdAndVer] = vspTestResults.vspTestResults;
+        var testResultKeyByVspId = {};
+        testResultKeyByVspId[vspIdAndVer] = testResultKeys.testResultKeys;
+         var obj = {
+                    softwareProductId: softwareProductId,
+                    version: version,
+                    softwareProductValidation:{
+                        testResultKeys: testResultKeys.testResultKeys
+                    },
+                    softwareProductValidationResult: {
+                        testResultToDisplay: testResultToDisplay,
+                        vspChecks: vspChecksList,
+                         refreshValidationResults: [],
+                         testResultKeys: testResultKeyByVspId
+                    }
+                };
+
         let vspValidationResultsView = TestUtils.renderIntoDocument(
             <SoftwareProductValidationResultsView {...obj} />
         );
@@ -84,18 +113,29 @@
 
     it('SoftwareProductValidationResultsView test success render test', () => {
         const vspTestResults = VSPTestResultsSuccessFactory.build();
+        const testResultKeys = VSPTestResultKeysFactory.build();
         const vspTestsMap = VSPTestsMapFactory.build();
-
+        const vspChecksList = VSPChecksFactory.build();
         let version = {
             name: 1
         };
+
         const softwareProductId = '1234';
+        var testResultToDisplay = {};
+        var vspIdAndVer = softwareProductId+version.name;
+        testResultToDisplay[vspIdAndVer] = vspTestResults.vspTestResults;
+        var testResultKeyByVspId = {};
+         testResultKeyByVspId[vspIdAndVer] = testResultKeys.testResultKeys;
+
         var obj = {
             softwareProductId: softwareProductId,
             version: version,
-            softwareProductValidation: {
-                vspTestResults: vspTestResults.vspTestResults,
-                vspTestsMap: vspTestsMap.vspTestsMap
+            softwareProductValidation:{
+                testResultKeys: testResultKeys.testResultKeys
+            },
+            softwareProductValidationResult: {
+                testResultToDisplay: testResultToDisplay,
+                vspChecks: vspChecksList
             }
         };
         let vspValidationResultsView = TestUtils.renderIntoDocument(
diff --git a/openecomp-ui/test/softwareProduct/validationResults/SoftwareProductValidationResultsViewActionHelper.test.js b/openecomp-ui/test/softwareProduct/validationResults/SoftwareProductValidationResultsViewActionHelper.test.js
new file mode 100644
index 0000000..064a323
--- /dev/null
+++ b/openecomp-ui/test/softwareProduct/validationResults/SoftwareProductValidationResultsViewActionHelper.test.js
@@ -0,0 +1,107 @@
+/*
+ * Copyright © 2019 Vodafone Group
+ *
+ * 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 deepFreeze from 'deep-freeze';
+import mockRest from 'test-utils/MockRest.js';
+import { cloneAndSet } from 'test-utils/Util.js';
+import { storeCreator } from 'sdc-app/AppStore.js';
+import SoftwareProductValidationResultsViewActionHelper from 'sdc-app/onboarding/softwareProduct/validationResults/SoftwareProductValidationResultsViewActionHelper.js';
+import { tabsMapping } from 'sdc-app/onboarding/softwareProduct/validation/SoftwareProductValidationConstants.js';
+import Configuration from 'sdc-app/config/Configuration.js';
+import { VSPTestResultsSuccessFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
+import { VSPTestResultsFailureFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
+import { VSPTestResultKeysFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationResultsFactory.js';
+import { VSPTestsMapFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
+import { VSPChecksFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
+import { VSPTestsRequestFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
+import { VSPGeneralInfoFactory } from 'test-utils/factories/softwareProduct/SoftwareProductValidationFactory.js';
+import VersionFactory from 'test-utils/factories/common/VersionFactory.js';
+
+
+describe('Software Product Validation Test Result Action Helper Tests', function() {
+    const store = storeCreator();
+    deepFreeze(store.getState());
+    const version = VersionFactory.build();
+    const vspId = 10000;
+    const vspChecksList = VSPChecksFactory.build();
+    const vspTestsMap = VSPTestsMapFactory.build();
+
+    const errorMessage = { msg: 'Test Error Message' };
+    const testsRequest = VSPTestsRequestFactory.build();
+    const generalInfo = VSPGeneralInfoFactory.build();
+    const isValidationDisabled = false;
+    const testResultKeys = VSPTestResultKeysFactory.build();
+    const vspTestResults = VSPTestResultsSuccessFactory.build();
+    const requestQuery = "requestId="+testResultKeys.testResultKeys.requestId
+        + "&" + "endPoint=" +  testResultKeys.testResultKeys.endPoints[0];
+    let restPrefix = Configuration.get('restPrefix');
+    let onClose = () => {};
+
+    const modal = {
+        type: 'error',
+        title: 'Error',
+        modalComponentName: 'Error',
+        modalComponentProps: {
+            onClose: onClose
+        },
+        msg: {
+            msg: 'Test Error Message'
+        },
+        cancelButtonText: 'OK'
+    };
+
+    it('Software Products Validation Test Result Action Helper : fetch vsp', () => {
+        let expectedStore = cloneAndSet(
+            store.getState(),
+            'softwareProduct.softwareProductValidationResult.vspChecks',
+            vspChecksList
+        );
+        mockRest.addHandler('fetch', ({ baseUrl }) => {
+            expect(baseUrl).toEqual(
+                `${restPrefix}/v1.0/externaltesting/testcasetree`
+            );
+            return vspChecksList;
+        });
+        return SoftwareProductValidationResultsViewActionHelper.fetchVspChecks(
+            store.dispatch
+        ).then(() => {
+            var stat  = store.getState();
+            expect(stat).toEqual(expectedStore);
+        })
+    });
+
+     it('Software Products Validation Test Result Action Helper : RefreshValidationResults', () => {
+            let expectedStore = cloneAndSet(
+                store.getState(),
+                'softwareProduct.softwareProductValidationResult.vspTestResults',
+                vspTestResults.vspTestResults
+            );
+            mockRest.addHandler('fetch', ({ baseUrl }) => {
+                expect(baseUrl).toEqual(
+                  `${restPrefix}/v1.0/externaltesting/executions?${requestQuery}`
+                );
+                return vspTestResults.vspTestResults;
+            });
+            return SoftwareProductValidationResultsViewActionHelper.refreshValidationResults(
+                store.dispatch, {
+                      requestId: testResultKeys.testResultKeys.requestId,
+                      endPoints: testResultKeys.testResultKeys.endPoints
+                }
+            ).then(() => {
+                var stt = store.getState();
+                expect(stt).toEqual(expectedStore);
+             })
+     });
+})