From 1132444e96822fdb664f329fc3d4a97405f3d302 Mon Sep 17 00:00:00 2001 From: Detailleur <detailleur@fortiss.org> Date: Tue, 8 Jun 2021 17:13:03 +0200 Subject: [PATCH] [NRRPLT-8288]test error and import experiment --- .../import-experiment-service.test.js | 54 +++++++++++++++++++ .../files/import-experiment-service.js | 11 ++++ 2 files changed, 65 insertions(+) create mode 100644 src/services/__tests__/import-experiment-service.test.js diff --git a/src/services/__tests__/import-experiment-service.test.js b/src/services/__tests__/import-experiment-service.test.js new file mode 100644 index 0000000..4adb857 --- /dev/null +++ b/src/services/__tests__/import-experiment-service.test.js @@ -0,0 +1,54 @@ +/** + * @jest-environment jsdom +*/ +import '@testing-library/jest-dom'; +import 'jest-fetch-mock'; + +import ErrorHandlerService from '../error-handler-service'; + +test('makes sure that invoking the constructor fails with the right message', () => { + expect(() => { + new ErrorHandlerService(); + }).toThrow(Error); + expect(() => { + new ErrorHandlerService(); + }).toThrowError(Error('Use ErrorHandlerService.instance')); +}); + +test('the experiments service instance always refers to the same object', () => { + const instance1 = ErrorHandlerService.instance; + const instance2 = ErrorHandlerService.instance; + expect(instance1).toBe(instance2); +}); + +test('should emit an event on network error', () => { + jest.spyOn(ErrorHandlerService.instance, 'networkError').mockImplementation(() => { + return Promise.resolve(); + }); + let NetworkError = MockNetworkError; + ErrorHandlerService.instance.addListener( + ErrorHandlerService.EVENTS.Error, + confirmStartingExperiment + ); + await ErrorHandlerService.instance.networkError(NetworkError); + ErrorHandlerService.instance.removeListener( + ErrorHandlerService.EVENTS.Error, + confirmStartingExperiment + ); +}); + +test('should emit an event on data error', () => { + jest.spyOn(ErrorHandlerService.instance, 'dataError').mockImplementation(() => { + return Promise.resolve(); + }); + let DataError = DataNetworkError; + ErrorHandlerService.instance.addListener( + ErrorHandlerService.EVENTS.ERROR, + confirmStartingExperiment + ); + await ErrorHandlerService.instance.dataError(NetworkError); + ErrorHandlerService.instance.removeListener( + ErrorHandlerService.EVENTS.ERROR, + confirmStartingExperiment + ); +}); diff --git a/src/services/experiments/files/import-experiment-service.js b/src/services/experiments/files/import-experiment-service.js index 4570938..341e191 100644 --- a/src/services/experiments/files/import-experiment-service.js +++ b/src/services/experiments/files/import-experiment-service.js @@ -7,8 +7,19 @@ import ErrorHandlerService from '../../error-handler-service.js'; const importExperimentURL = `${config.api.proxy.url}${endpoints.proxy.storage.importExperiment.url}`; const scanStorageURL = `${config.api.proxy.url}${endpoints.proxy.storage.scanStorage.url}`; +/** + * The Import Experiment Service performs the requests (Extract), + * processes data such as zip or folder (Transform), + * and passes them to the Import Experiment Component (Load). + * Errors are handled by communicating witht he Error Handler Service. + */ + let _instance = null; const SINGLETON_ENFORCER = Symbol(); + +/** + * Non-default options (content type) for the POST request + */ const options = { mode: 'cors', // no-cors, *cors, same-origin cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached -- GitLab