From a3709593fe8fd8fb3a1906847d6e79111f6d55ed Mon Sep 17 00:00:00 2001
From: Ramesh Kumar <ramesh.p@matriotsolutions.com>
Date: Tue, 13 Sep 2022 16:43:13 +0530
Subject: [PATCH] TMSS-1648: replaceAll issue fixed and added mock for test
 console

---
 .../frontend/tmss_webapp/package-lock.json    | 31 ++++++-------------
 SAS/TMSS/frontend/tmss_webapp/package.json    |  4 ++-
 .../src/components/JSONEditor/JEditor.js      |  2 +-
 .../src/routes/Cycle/create.test.js           | 12 ++++---
 .../tmss_webapp/src/routes/Cycle/list.test.js |  4 +++
 .../src/routes/Project/create.test.js         | 12 ++++---
 .../src/routes/Project/edit.test.js           | 12 ++++---
 .../src/routes/Project/list.test.js           |  5 +++
 .../src/routes/Project/view.test.js           | 12 ++++---
 .../src/routes/Scheduling/create.test.js      |  6 +++-
 .../excelview.schedulingset.test.js           |  6 +++-
 .../src/routes/Task/dataproduct.test.js       |  4 +++
 .../tmss_webapp/src/routes/Task/edit.test.js  |  4 +++
 .../tmss_webapp/src/routes/Task/view.test.js  |  4 +++
 14 files changed, 77 insertions(+), 41 deletions(-)

diff --git a/SAS/TMSS/frontend/tmss_webapp/package-lock.json b/SAS/TMSS/frontend/tmss_webapp/package-lock.json
index 5ff5cbf4ef2..4985adb8376 100644
--- a/SAS/TMSS/frontend/tmss_webapp/package-lock.json
+++ b/SAS/TMSS/frontend/tmss_webapp/package-lock.json
@@ -11212,6 +11212,11 @@
         "@types/node": "*"
       }
     },
+    "jest-mock-console": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/jest-mock-console/-/jest-mock-console-2.0.0.tgz",
+      "integrity": "sha512-7zrKtXVut+6doalosFxw/2O9spLepQJ9VukODtyLIub2fFkWKe1TyQrxr/GyQogTQcdkHfhvFJdx1OEzLqf/mw=="
+    },
     "jest-pnp-resolver": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz",
@@ -12096,11 +12101,6 @@
       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
       "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
     },
-    "js-base64": {
-      "version": "2.6.4",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
-      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
-    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -16174,6 +16174,11 @@
         "yargs": "^17.2.1"
       },
       "dependencies": {
+        "scss-tokenizer": {
+          "version": "0.4.3",
+          "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz",
+          "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw=="
+        },
         "yargs": {
           "version": "17.5.1",
           "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
@@ -16235,22 +16240,6 @@
         "ajv-keywords": "^3.5.2"
       }
     },
-    "scss-tokenizer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.3.0.tgz",
-      "integrity": "sha512-14Zl9GcbBvOT9057ZKjpz5yPOyUWG2ojd9D5io28wHRYsOrs7U95Q+KNL87+32p8rc+LvDpbu/i9ZYjM9Q+FsQ==",
-      "requires": {
-        "js-base64": "^2.4.3",
-        "source-map": "^0.7.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.7.4",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
-          "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
-        }
-      }
-    },
     "select-hose": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
diff --git a/SAS/TMSS/frontend/tmss_webapp/package.json b/SAS/TMSS/frontend/tmss_webapp/package.json
index 889da5eddfc..f158f634dda 100644
--- a/SAS/TMSS/frontend/tmss_webapp/package.json
+++ b/SAS/TMSS/frontend/tmss_webapp/package.json
@@ -23,6 +23,7 @@
     "html2canvas": "^1.0.0-rc.7",
     "immer": "^9.0.14",
     "interactjs": "^1.9.22",
+    "jest-mock-console": "^2.0.0",
     "jquery": "^3.6.0",
     "json-schema-ref-parser": "^1.0.0-alpha.21",
     "jspdf": "^2.3.0",
@@ -114,7 +115,8 @@
     "ansi-regex": "5.0.1",
     "ejs": "^3.1.7",
     "ansi-html": "^0.0.8",
-    "nth-check": "^2.0.1"
+    "nth-check": "^2.0.1",
+    "scss-tokenizer": "0.4.3"
   },
   "description": "This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).",
   "main": "index.js",
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
index 2d2aa61e2dd..de1840eeba5 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js
@@ -1065,7 +1065,7 @@ function Jeditor(props) {
         if (stationListPaths && stationListPaths.length > 0) {
             for (const stationListPath of stationListPaths ) {
                 const path = stationListPath;
-                const stationPath = stationListPath.replaceAll("][",".").replaceAll("[",".").replaceAll("]","");
+                const stationPath = stationListPath.replace(/]\[/g,".").replace("[",".").replace("]","");
                 if (editor && editor.editors && editor.editors[stationPath]) {
                     let stationList =  editor.editors[stationPath].value;
                     let selectedStationsContent = '<label for="specification[resources][selected_station_list]">Selected Stations</label>';
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/create.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/create.test.js
index 9428ff318ba..158b9d44b5b 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/create.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/create.test.js
@@ -4,6 +4,7 @@ import { act } from "react-dom/test-utils";
 import { render, cleanup, fireEvent, screen } from '@testing-library/react';
 import '@testing-library/jest-dom/extend-expect';
 //import userEvent from "@testing-library/user-event";
+import mockConsole from 'jest-mock-console';
 
 import {CycleCreate} from './create';
 import CycleService from '../../services/cycle.service';
@@ -12,15 +13,18 @@ import _ from 'lodash';
 import CycleServiceMock from '../../__mocks__/cycle.service.data';
 
 let saveCycleSpy, resourcesSpy, cycleResourceDefaultsSpy;
+let restoreConsole;
 
 beforeEach(() => {
-  setMockSpy();
+    restoreConsole = mockConsole();
+    setMockSpy();
 });
 
 afterEach(() => {
-  // cleanup on exiting
-  clearMockSpy();
-  cleanup();
+    restoreConsole();
+    // cleanup on exiting
+    clearMockSpy();
+    cleanup();
 });
 
 /**
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.test.js
index b0a84f6d767..2cabd9ad3d9 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/list.test.js
@@ -5,6 +5,7 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import 'regenerator-runtime/runtime'
 //import { MemoryRouter } from 'react-router-dom';
 import { render, cleanup, fireEvent } from '@testing-library/react';
+import mockConsole from "jest-mock-console";
 import CycleList from './list';
 import CycleServiceMock from '../../__mocks__/cycle.service.data';
 import CycleService from '../../services/cycle.service';
@@ -14,14 +15,17 @@ import AuthUtil from '../../utils/auth.util';
 
 let allCyclesSpy, resourcesSpy, allCycleQuotasSpy, projectsByCycleSpy, authSpy;
 let container = null;
+let restoreConsole;
 
 beforeEach(() => { 
+    restoreConsole = mockConsole();
     container = document.createElement("div");
     document.body.appendChild(container);
     setMockSpy();
   });
 
   afterEach(() => {
+    restoreConsole();
     // cleanup on exiting
     clearMockSpy();
     cleanup();
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.test.js
index 7085591a552..1a7f6d17454 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.test.js
@@ -3,6 +3,7 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import { act } from "react-dom/test-utils";
 import { render, cleanup, fireEvent, screen } from '@testing-library/react';
 import '@testing-library/jest-dom/extend-expect';
+import mockConsole from "jest-mock-console";
 import _ from 'lodash';
 
 import {ProjectCreate} from './create';
@@ -12,15 +13,18 @@ import CycleService from '../../services/cycle.service';
 import ProjectServiceMock from '../../__mocks__/project.service.data';
 
 let projectCategoriesSpy, allCycleSpy, periodCategoriesSpy, saveProjectSpy, resourcesSpy, projectResourceDefaultsSpy,fileSystemSpy,clusterSpy;
+let restoreConsole;
 
 beforeEach(() => {
-  setMockSpy();
+    restoreConsole = mockConsole();
+    setMockSpy();
 });
 
 afterEach(() => {
-  // cleanup on exiting
-  clearMockSpy();
-  cleanup();
+    restoreConsole();
+    // cleanup on exiting
+    clearMockSpy();
+    cleanup();
 });
 
 /**
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.test.js
index 935141feecb..0ddb70d4f42 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.test.js
@@ -3,6 +3,7 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import { act } from "react-dom/test-utils";
 import { render, cleanup, fireEvent, screen } from '@testing-library/react';
 import '@testing-library/jest-dom/extend-expect';
+import mockConsole from "jest-mock-console";
 import _ from 'lodash';
 
 import {ProjectEdit} from './edit';
@@ -16,15 +17,18 @@ import AuthService from '../../services/auth.service';
 
 let projectCategoriesSpy, allCycleSpy, periodCategoriesSpy, projectDetailsSpy, resourcesSpy, projectQuotaSpy, archiveLocationSpy,
     updateProjectSpy, savePQSpy, updatePQSpy, deletePQSpy, projectPermissionSpy, fileSystemSpy, clusterSpy;
+let restoreConsole;
 
 beforeEach(() => {
-  setMockSpy();
+    restoreConsole = mockConsole();
+    setMockSpy();
 });
 
 afterEach(() => {
-  // cleanup on exiting
-  clearMockSpy();
-  cleanup();
+    restoreConsole();
+    // cleanup on exiting
+    clearMockSpy();
+    cleanup();
 });
 
 /**
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.test.js
index 66d9fe673c4..98ebb4045b7 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/list.test.js
@@ -3,6 +3,7 @@ import React from 'react';
 import { BrowserRouter as Router } from 'react-router-dom';
 // import { act } from 'react-dom/test-utils';
 import { cleanup, render, fireEvent} from '@testing-library/react';
+import mockConsole from "jest-mock-console";
 import ProjectList from './list';
 import ProjectServiceMock from '../../__mocks__/project.service.data';
 import ProjectService from '../../services/project.service';
@@ -12,11 +13,15 @@ import SUServiceMock from '../../__mocks__/scheduleunit.service.data';
 
 let container = null;
 let authSpy, projectListSpy, clusterSpy, fileSystemSpy, projectArchiveLocationSpy, projectStateSpy, rolesSpy, friendsSpy, resourceTypeSpy;
+let restoreConsole;
+
 beforeEach(() =>{
+    restoreConsole = mockConsole();
     setMockSpy();
 });
 
 afterEach(() =>{
+    restoreConsole();
     clearMockSpy();
     cleanup();
 })
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.test.js
index a89c5cb471c..f48113beacb 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/view.test.js
@@ -3,6 +3,7 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import { act } from "react-dom/test-utils";
 import { render, cleanup, fireEvent } from '@testing-library/react';
 import '@testing-library/jest-dom/extend-expect';
+import mockConsole from "jest-mock-console";
 import _ from 'lodash';
 
 import {ProjectView} from './view';
@@ -16,15 +17,18 @@ import SUServiceMock from '../../__mocks__/scheduleunit.service.data';
 
 
 let projectDetailsSpy, resourcesSpy, projectQuotaSpy,projectPermissionSpy,suListSpy,suFiltersSpy, stationSpy, clusterSpy, fileSystemSpy, projectStateSpy;
+let restoreConsole;
 
 beforeEach(() => {
-  setMockSpy();
+    restoreConsole = mockConsole();
+    setMockSpy();
 });
 
 afterEach(() => {
-  // cleanup on exiting
-  clearMockSpy();
-  cleanup();
+    restoreConsole();
+    // cleanup on exiting
+    clearMockSpy();
+    cleanup();
 });
 
 /**
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.test.js
index 805e64384ae..4d76bafcb96 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/create.test.js
@@ -3,7 +3,8 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import { act } from "react-dom/test-utils";
 import { render, screen, cleanup, fireEvent, waitForElement  } from '@testing-library/react';
 import '@testing-library/jest-dom/extend-expect';
-import '@testing-library/jest-dom'
+import '@testing-library/jest-dom';
+import mockConsole from "jest-mock-console";
 // import renderer from 'react-test-renderer';
 import _ from 'lodash';
 
@@ -27,12 +28,15 @@ utilSpy, utcSpy, taskFilterDefSpy, suConstraintTemplateSpy, suFilterDefSpy, allT
 userPermissionSpy, authPermissionSpy,  scheduleSetByIdSpy, templatePurposesSpy, templateStatesSpy, validatorSpy, rolesSpy;
 
 jest.setTimeout(1200000);
+let restoreConsole;
 
 beforeEach(() => {
+    restoreConsole = mockConsole();
     setMockSpy();
 });
 
 afterEach(() => {
+    restoreConsole();
     // cleanup on exiting
     clearMockSpy();
     cleanup();
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.test.js
index bb6bd486b65..683a94ce713 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.test.js
@@ -3,7 +3,8 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import { act } from "react-dom/test-utils";
 import { render, cleanup, fireEvent, screen  } from '@testing-library/react';
 import '@testing-library/jest-dom/extend-expect';
-import '@testing-library/jest-dom'
+import '@testing-library/jest-dom';
+import mockConsole from "jest-mock-console";
 import _ from "lodash";
 
 import {SchedulingSetCreate} from './excelview.schedulingset';
@@ -25,12 +26,15 @@ let projectListSpy, scheduleSetListSpy, observStrategiesSpy, taskTemplatesSpy, s
 utilSpy, utcSpy, taskFilterDefSpy, suConstraintTemplateSpy,  allTaskRelationSpy, stationGroupSpy, stationSpy, 
 userPermissionSpy, authPermissionSpy,  scheduleSetByIdSpy, templatePurposesSpy, templateStatesSpy, rolesSpy;
 jest.setTimeout(120000);
+let restoreConsole;
 
 beforeEach(() => {
+    restoreConsole = mockConsole();
     setMockSpy();
 });
 
 afterEach(() => {
+    restoreConsole();
     // cleanup on exiting
     clearMockSpy();
     cleanup();
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/dataproduct.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/dataproduct.test.js
index 5986ac0df86..0f1b9fe3170 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/dataproduct.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/dataproduct.test.js
@@ -4,6 +4,7 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import 'regenerator-runtime/runtime'
 //import { MemoryRouter } from 'react-router-dom';
 import { render, screen, cleanup, fireEvent } from '@testing-library/react';
+import mockConsole from 'jest-mock-console';
 import {DataProduct} from './dataproduct';
 import DataProductServiceMock from '../../__mocks__/dataproduct.service.data';
 import { act} from "react-dom/test-utils";
@@ -14,14 +15,17 @@ import _ from 'lodash';
 
 let TaskDetailsSpy, SubtaskSpy, InputDataProductSpy, OutputDataProductSpy;
 let container = null;
+let restoreConsole;
 
 beforeEach(() => { 
+    restoreConsole = mockConsole();
     container = document.createElement("div");
     document.body.appendChild(container);
     setMockSpy();
   });
 
   afterEach(() => {
+    restoreConsole();
     // cleanup on exiting
     clearMockSpy();
     cleanup();
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js
index e10fba5dd91..351583767d9 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js
@@ -3,6 +3,7 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import { act } from "react-dom/test-utils";
 import { render, screen, cleanup, fireEvent, waitForElement } from '@testing-library/react';
 import '@testing-library/jest-dom/extend-expect';
+import mockConsole from 'jest-mock-console'
 import _ from 'lodash';
 import { TaskEdit } from './edit';
 import TaskService from '../../services/task.service';
@@ -13,11 +14,14 @@ import AuthServiceMock from '../../__mocks__/auth.service.data';
 let taskPermissionSpy, taskFilterDefSpy, subtaskTypesSpy, taskDetailsSpy, taskTemplateSpy, taskTemplatesSpy,
 schedulingUnitSpy, updateTaskSpy, validatorSpy;
 jest.setTimeout(120000);
+let restoreConsole;
 beforeEach(() => {
+    restoreConsole = mockConsole();
     setMockSpy();
 });
 
 afterEach(() => {
+    restoreConsole();
     // cleanup on exiting
     clearMockSpy();
     cleanup();
diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js
index 651e1e46f93..84d071e0d3a 100644
--- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js
+++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js
@@ -3,6 +3,7 @@ import { BrowserRouter as Router } from 'react-router-dom';
 import { act } from "react-dom/test-utils";
 import { render, cleanup, fireEvent } from '@testing-library/react';
 import '@testing-library/jest-dom/extend-expect';
+import mockConsole from 'jest-mock-console';
 import _ from 'lodash';
 
 import { TaskView } from './view';
@@ -13,12 +14,15 @@ import AuthServiceMock from '../../__mocks__/auth.service.data';
 
 let taskPermissionSpy, taskFilterDefSpy, subtaskTypesSpy, taskDetailsSpy, taskTemplateSpy, 
 schedulingUnitSpy;
+let restoreConsole;
 
 beforeEach(() => {
+    restoreConsole = mockConsole();
     setMockSpy();
 });
 
 afterEach(() => {
+    restoreConsole();
     // cleanup on exiting
     clearMockSpy();
     cleanup();
-- 
GitLab