From f956e8f9f74f157260385506305c7fb542c53336 Mon Sep 17 00:00:00 2001
From: Antoine Detailleur <detailleur@fortiss.org>
Date: Wed, 3 Feb 2021 16:22:08 +0100
Subject: [PATCH] [NRRPLT-8094] import experiment added in experiment overview
 instead of experiment list

---
 .../experiment-list/experiment-list.css       |  5 -----
 .../experiment-list/experiment-list.js        |  4 ----
 .../experiment-overview.js                    |  2 ++
 .../experiment-storage-service.test.js        | 22 ++++++++++++-------
 4 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/src/components/experiment-list/experiment-list.css b/src/components/experiment-list/experiment-list.css
index ae50ee0..be1ab3c 100644
--- a/src/components/experiment-list/experiment-list.css
+++ b/src/components/experiment-list/experiment-list.css
@@ -8,7 +8,6 @@ li.nostyle {
     grid-template-rows: auto;
     grid-template-columns: auto;
     grid-template-areas:
-        "import-experiments"
         "experiments";
 }
 
@@ -19,10 +18,6 @@ li.nostyle {
     background-color: white;
 }
 
-.import-experiments {
-  grid-area: import-experiments;
-}
-
 .no-items-notification {
     margin: 10px;
     font-size: 1.5em;
diff --git a/src/components/experiment-list/experiment-list.js b/src/components/experiment-list/experiment-list.js
index b165746..8ff9165 100644
--- a/src/components/experiment-list/experiment-list.js
+++ b/src/components/experiment-list/experiment-list.js
@@ -1,6 +1,5 @@
 import React from 'react';
 
-import ImportExperimentButtons from '../experiment-list/import-experiment-buttons.js';
 import ExperimentListElement from './experiment-list-element.js';
 
 import './experiment-list.css';
@@ -9,9 +8,6 @@ export default class ExperimentList extends React.Component {
   render() {
     return (
       <div className='experiment-list-wrapper'>
-        <div className='import-experiment'>
-          <ImportExperimentButtons />
-        </div>
         <div className='experiment-list'>
           {this.props.experiments.length === 0 ?
             <div className='no-items-notification'>List is currently empty ...</div> :
diff --git a/src/components/experiment-overview/experiment-overview.js b/src/components/experiment-overview/experiment-overview.js
index 6b67ad2..42dda8d 100644
--- a/src/components/experiment-overview/experiment-overview.js
+++ b/src/components/experiment-overview/experiment-overview.js
@@ -6,6 +6,7 @@ import ExperimentStorageService from '../../services/experiments/storage/experim
 import ExperimentServerService from '../../services/experiments/execution/server-resources-service.js';
 import ExperimentExecutionService from '../../services/experiments/execution/experiment-execution-service.js';
 
+import ImportExperimentButtons from '../experiment-list/import-experiment-buttons.js';
 import ExperimentList from '../experiment-list/experiment-list.js';
 import NrpHeader from '../nrp-header/nrp-header.js';
 
@@ -104,6 +105,7 @@ export default class ExperimentOverview extends React.Component {
           </TabList>
 
           <TabPanel>
+            <ImportExperimentButtons />
             <ExperimentList experiments={this.state.experiments}
               availableServers={this.state.availableServers}
               startingExperiment={this.state.startingExperiment} />
diff --git a/src/services/experiments/storage/__tests__/experiment-storage-service.test.js b/src/services/experiments/storage/__tests__/experiment-storage-service.test.js
index e4c5049..8f67834 100644
--- a/src/services/experiments/storage/__tests__/experiment-storage-service.test.js
+++ b/src/services/experiments/storage/__tests__/experiment-storage-service.test.js
@@ -13,13 +13,19 @@ jest.mock('../../../authentication-service');
 const proxyEndpoint = endpoints.proxy;
 const experimentsUrl = `${config.api.proxy.url}${proxyEndpoint.storage.experiments.url}`;
 
-test('fetches the list of experiments', async () => {
-  jest.spyOn(ExperimentStorageService.instance, 'performRequest');
-  const experiments = await ExperimentStorageService.instance.getExperiments();
-  expect(ExperimentStorageService.instance.performRequest)
-    .toHaveBeenCalledWith(experimentsUrl, ExperimentStorageService.instance.GETOptions);
-  expect(experiments[0].name).toBe('braitenberg_husky_holodeck_1_0_0');
-  expect(experiments[1].configuration.maturity).toBe('production');
+jest.setTimeout(3 * ExperimentStorageService.CONSTANTS.INTERVAL_POLL_EXPERIMENTS);
+
+let onWindowBeforeUnloadCb = undefined;
+beforeEach(() => {
+  jest.spyOn(window, 'addEventListener').mockImplementation((event, cb) => {
+    if (event === 'beforeunload') {
+      onWindowBeforeUnloadCb = cb;
+    }
+  });
+});
+
+afterEach(() => {
+  jest.restoreAllMocks();
 });
 
 test('makes sure that invoking the constructor fails with the right message', () => {
@@ -42,7 +48,7 @@ test('fetches the list of experiments', async () => {
 
   const experiments = await ExperimentStorageService.instance.getExperiments();
   expect(ExperimentStorageService.instance.performRequest)
-    .toHaveBeenCalledWith(experimentsUrl, ExperimentStorageService.instance.options);
+    .toHaveBeenCalledWith(experimentsUrl, ExperimentStorageService.instance.GETOptions);
   expect(experiments[0].name).toBe('braitenberg_husky_holodeck_1_0_0');
   expect(experiments[1].configuration.maturity).toBe('production');
 
-- 
GitLab