From 3f796b300dc343f9da50b7975c6d8278ed61dd59 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Wed, 7 Oct 2020 11:15:00 +0200 Subject: [PATCH 1/8] fix: ErrorResponse body changed to error --- src/types/ErrorResponse.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/types/ErrorResponse.ts b/src/types/ErrorResponse.ts index c00822a..85635df 100644 --- a/src/types/ErrorResponse.ts +++ b/src/types/ErrorResponse.ts @@ -1,5 +1,5 @@ export class ErrorResponse { - body: ErrorBody + error: ErrorBody constructor(message: string, details?: any) { let detailsString = '' @@ -11,7 +11,7 @@ export class ErrorResponse { raw = details } - this.body = { + this.error = { message, details: detailsString, raw From 7279c23fe25bf8a90302a5fa19a61d305a7b4372 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Tue, 27 Oct 2020 14:50:05 +0100 Subject: [PATCH 2/8] fix: FIleUploader added catch --- src/FileUploader.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/FileUploader.ts b/src/FileUploader.ts index 7bced7b..da87862 100644 --- a/src/FileUploader.ts +++ b/src/FileUploader.ts @@ -99,6 +99,9 @@ export class FileUploader { } } }) + .catch((err: any) => { + reject(err) + }) }) } } From 3f6e89d7160e9e7b898e5c8f2ebd03a1547fb690 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Fri, 30 Oct 2020 16:11:50 +0100 Subject: [PATCH 3/8] fix: file uploader error handling and tests --- src/FileUploader.ts | 53 +++++------ src/test/FileUploader.spec.ts | 93 +++++++++++++++++++ .../utils/parseGeneratedCode.spec.ts | 2 +- src/{ => test}/utils/parseSourceCode.spec.ts | 2 +- 4 files changed, 122 insertions(+), 28 deletions(-) create mode 100644 src/test/FileUploader.spec.ts rename src/{ => test}/utils/parseGeneratedCode.spec.ts (96%) rename src/{ => test}/utils/parseSourceCode.spec.ts (95%) diff --git a/src/FileUploader.ts b/src/FileUploader.ts index da87862..fe63ee4 100644 --- a/src/FileUploader.ts +++ b/src/FileUploader.ts @@ -1,6 +1,7 @@ import { isLogInRequired, needsRetry, isUrl } from './utils' import { CsrfToken } from './types/CsrfToken' import { UploadFile } from './types/UploadFile' +import { ErrorResponse } from './types' const requestRetryLimit = 5 @@ -18,29 +19,29 @@ export class FileUploader { private retryCount = 0 public uploadFile(sasJob: string, files: UploadFile[], params: any) { - if (files?.length < 1) - throw new Error('At least one file must be provided.') - - let paramsString = '' - - for (let param in params) { - if (params.hasOwnProperty(param)) { - paramsString += `&${param}=${params[param]}` - } - } - - const program = this.appLoc - ? this.appLoc.replace(/\/?$/, '/') + sasJob.replace(/^\//, '') - : sasJob - const uploadUrl = `${this.serverUrl}${this.jobsPath}/?${ - '_program=' + program - }${paramsString}` - - const headers = { - 'cache-control': 'no-cache' - } - return new Promise((resolve, reject) => { + if (files?.length < 1) reject(new ErrorResponse('At least one file must be provided.')) + if (!sasJob || sasJob === '') reject(new ErrorResponse('sasJob must be provided.')) + + let paramsString = '' + + for (let param in params) { + if (params.hasOwnProperty(param)) { + paramsString += `&${param}=${params[param]}` + } + } + + const program = this.appLoc + ? this.appLoc.replace(/\/?$/, '/') + sasJob.replace(/^\//, '') + : sasJob + const uploadUrl = `${this.serverUrl}${this.jobsPath}/?${ + '_program=' + program + }${paramsString}` + + const headers = { + 'cache-control': 'no-cache' + } + const formData = new FormData() for (let file of files) { @@ -48,7 +49,7 @@ export class FileUploader { } if (this.csrfToken) formData.append('_csrf', this.csrfToken.value) - + fetch(uploadUrl, { method: 'POST', body: formData, @@ -76,7 +77,7 @@ export class FileUploader { }) .then((responseText) => { if (isLogInRequired(responseText)) - reject('You must be logged in to upload a file') + reject(new ErrorResponse('You must be logged in to upload a file.')) if (needsRetry(responseText)) { if (this.retryCount < requestRetryLimit) { @@ -95,12 +96,12 @@ export class FileUploader { try { resolve(JSON.parse(responseText)) } catch (e) { - reject(e) + reject(new ErrorResponse('Error while parsing json from upload response.', e)) } } }) .catch((err: any) => { - reject(err) + reject(new ErrorResponse('Upload request failed.', err)) }) }) } diff --git a/src/test/FileUploader.spec.ts b/src/test/FileUploader.spec.ts new file mode 100644 index 0000000..538e178 --- /dev/null +++ b/src/test/FileUploader.spec.ts @@ -0,0 +1,93 @@ +import { FileUploader } from '../FileUploader' +import { UploadFile } from '../types'; + +(global as any).fetch = jest.fn().mockImplementation(() => + Promise.resolve({ + text: () => Promise.resolve(sampleResponse), + }) +); + +it('should upload successfully', async (done) => { + const fileUploader = + new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = 'test/upload' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ]; + const params = {table: 'libtable'} + + fileUploader.uploadFile(sasJob, files, params).then( + (res: any) => { + if (JSON.stringify(res) === JSON.stringify(JSON.parse(sampleResponse))) done() + } + ) +}) + +it('should throw no files error', async (done) => { + const fileUploader = + new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = 'test/upload' + const files: UploadFile[] = []; + const params = {table: 'libtable'} + + fileUploader.uploadFile(sasJob, files, params).then( + (res: any) => {}, + (err: any) => { + if (err.error.message === 'At least one file must be provided.') done() + } + ) +}) + +it('should throw no sasJob error', async (done) => { + const fileUploader = + new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = '' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ]; + const params = {table: 'libtable'} + + fileUploader.uploadFile(sasJob, files, params).then( + (res: any) => {}, + (err: any) => { + if (err.error.message === 'sasJob must be provided.') done() + } + ) +}) + +const sampleResponse = `{ + "SYSUSERID": "cas", + "_DEBUG":" ", + "SYS_JES_JOB_URI": "/jobExecution/jobs/000-000-000-000", + "_PROGRAM" : "/Public/app/editors/loadfile", + "SYSCC" : "0", + "SYSJOBID" : "117382", + "SYSWARNINGTEXT" : "" +}` \ No newline at end of file diff --git a/src/utils/parseGeneratedCode.spec.ts b/src/test/utils/parseGeneratedCode.spec.ts similarity index 96% rename from src/utils/parseGeneratedCode.spec.ts rename to src/test/utils/parseGeneratedCode.spec.ts index 116a88f..d08108d 100644 --- a/src/utils/parseGeneratedCode.spec.ts +++ b/src/test/utils/parseGeneratedCode.spec.ts @@ -1,4 +1,4 @@ -import { parseGeneratedCode } from './index' +import { parseGeneratedCode } from '../../utils/index' it('should parse generated code', async (done) => { expect(sampleResponse).toBeTruthy() diff --git a/src/utils/parseSourceCode.spec.ts b/src/test/utils/parseSourceCode.spec.ts similarity index 95% rename from src/utils/parseSourceCode.spec.ts rename to src/test/utils/parseSourceCode.spec.ts index d407d49..4e779cb 100644 --- a/src/utils/parseSourceCode.spec.ts +++ b/src/test/utils/parseSourceCode.spec.ts @@ -1,4 +1,4 @@ -import { parseSourceCode } from './index' +import { parseSourceCode } from '../../utils/index' it('should parse SAS9 source code', async (done) => { expect(sampleResponse).toBeTruthy() From 1a3bd5d1f549c4c163b839bd1d43405088e19518 Mon Sep 17 00:00:00 2001 From: Mihajlo Medjedovic Date: Fri, 30 Oct 2020 16:13:03 +0100 Subject: [PATCH 4/8] chore: lint --- src/FileUploader.ts | 15 ++-- src/test/FileUploader.spec.ts | 132 +++++++++++++++++----------------- 2 files changed, 75 insertions(+), 72 deletions(-) diff --git a/src/FileUploader.ts b/src/FileUploader.ts index fe63ee4..8e0b643 100644 --- a/src/FileUploader.ts +++ b/src/FileUploader.ts @@ -20,8 +20,10 @@ export class FileUploader { public uploadFile(sasJob: string, files: UploadFile[], params: any) { return new Promise((resolve, reject) => { - if (files?.length < 1) reject(new ErrorResponse('At least one file must be provided.')) - if (!sasJob || sasJob === '') reject(new ErrorResponse('sasJob must be provided.')) + if (files?.length < 1) + reject(new ErrorResponse('At least one file must be provided.')) + if (!sasJob || sasJob === '') + reject(new ErrorResponse('sasJob must be provided.')) let paramsString = '' @@ -49,7 +51,7 @@ export class FileUploader { } if (this.csrfToken) formData.append('_csrf', this.csrfToken.value) - + fetch(uploadUrl, { method: 'POST', body: formData, @@ -96,7 +98,12 @@ export class FileUploader { try { resolve(JSON.parse(responseText)) } catch (e) { - reject(new ErrorResponse('Error while parsing json from upload response.', e)) + reject( + new ErrorResponse( + 'Error while parsing json from upload response.', + e + ) + ) } } }) diff --git a/src/test/FileUploader.spec.ts b/src/test/FileUploader.spec.ts index 538e178..0f60681 100644 --- a/src/test/FileUploader.spec.ts +++ b/src/test/FileUploader.spec.ts @@ -1,85 +1,81 @@ import { FileUploader } from '../FileUploader' -import { UploadFile } from '../types'; +import { UploadFile } from '../types' -(global as any).fetch = jest.fn().mockImplementation(() => +;(global as any).fetch = jest.fn().mockImplementation(() => Promise.resolve({ - text: () => Promise.resolve(sampleResponse), + text: () => Promise.resolve(sampleResponse) }) -); +) it('should upload successfully', async (done) => { - const fileUploader = - new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - - const sasJob = 'test/upload' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ]; - const params = {table: 'libtable'} + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) - fileUploader.uploadFile(sasJob, files, params).then( - (res: any) => { - if (JSON.stringify(res) === JSON.stringify(JSON.parse(sampleResponse))) done() - } - ) + const sasJob = 'test/upload' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).then((res: any) => { + if (JSON.stringify(res) === JSON.stringify(JSON.parse(sampleResponse))) + done() + }) }) it('should throw no files error', async (done) => { - const fileUploader = - new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - - const sasJob = 'test/upload' - const files: UploadFile[] = []; - const params = {table: 'libtable'} + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) - fileUploader.uploadFile(sasJob, files, params).then( - (res: any) => {}, - (err: any) => { - if (err.error.message === 'At least one file must be provided.') done() - } - ) + const sasJob = 'test/upload' + const files: UploadFile[] = [] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).then( + (res: any) => {}, + (err: any) => { + if (err.error.message === 'At least one file must be provided.') done() + } + ) }) it('should throw no sasJob error', async (done) => { - const fileUploader = - new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - - const sasJob = '' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ]; - const params = {table: 'libtable'} + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) - fileUploader.uploadFile(sasJob, files, params).then( - (res: any) => {}, - (err: any) => { - if (err.error.message === 'sasJob must be provided.') done() - } - ) + const sasJob = '' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).then( + (res: any) => {}, + (err: any) => { + if (err.error.message === 'sasJob must be provided.') done() + } + ) }) const sampleResponse = `{ @@ -90,4 +86,4 @@ const sampleResponse = `{ "SYSCC" : "0", "SYSJOBID" : "117382", "SYSWARNINGTEXT" : "" -}` \ No newline at end of file +}` From e94e16b52c391ac656825699a164518dfb84ca26 Mon Sep 17 00:00:00 2001 From: Krishna Acondy Date: Mon, 2 Nov 2020 07:55:48 +0000 Subject: [PATCH 5/8] chore(*): fix linting errors --- src/test/FileUploader.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/FileUploader.spec.ts b/src/test/FileUploader.spec.ts index 0f60681..8f12ba3 100644 --- a/src/test/FileUploader.spec.ts +++ b/src/test/FileUploader.spec.ts @@ -1,6 +1,5 @@ import { FileUploader } from '../FileUploader' import { UploadFile } from '../types' - ;(global as any).fetch = jest.fn().mockImplementation(() => Promise.resolve({ text: () => Promise.resolve(sampleResponse) From bc110288de890834e1c2ee12047e0fe2e1f60c00 Mon Sep 17 00:00:00 2001 From: Krishna Acondy Date: Mon, 2 Nov 2020 08:51:27 +0000 Subject: [PATCH 6/8] chore(file-uploader): improve mocking of fetch, add tests for all error scenarios --- src/test/FileUploader.spec.ts | 260 ++++++++++++++++++++++++---------- 1 file changed, 184 insertions(+), 76 deletions(-) diff --git a/src/test/FileUploader.spec.ts b/src/test/FileUploader.spec.ts index 8f12ba3..b76b527 100644 --- a/src/test/FileUploader.spec.ts +++ b/src/test/FileUploader.spec.ts @@ -1,81 +1,5 @@ import { FileUploader } from '../FileUploader' import { UploadFile } from '../types' -;(global as any).fetch = jest.fn().mockImplementation(() => - Promise.resolve({ - text: () => Promise.resolve(sampleResponse) - }) -) - -it('should upload successfully', async (done) => { - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - - const sasJob = 'test/upload' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ] - const params = { table: 'libtable' } - - fileUploader.uploadFile(sasJob, files, params).then((res: any) => { - if (JSON.stringify(res) === JSON.stringify(JSON.parse(sampleResponse))) - done() - }) -}) - -it('should throw no files error', async (done) => { - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - - const sasJob = 'test/upload' - const files: UploadFile[] = [] - const params = { table: 'libtable' } - - fileUploader.uploadFile(sasJob, files, params).then( - (res: any) => {}, - (err: any) => { - if (err.error.message === 'At least one file must be provided.') done() - } - ) -}) - -it('should throw no sasJob error', async (done) => { - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - - const sasJob = '' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ] - const params = { table: 'libtable' } - - fileUploader.uploadFile(sasJob, files, params).then( - (res: any) => {}, - (err: any) => { - if (err.error.message === 'sasJob must be provided.') done() - } - ) -}) const sampleResponse = `{ "SYSUSERID": "cas", @@ -86,3 +10,187 @@ const sampleResponse = `{ "SYSJOBID" : "117382", "SYSWARNINGTEXT" : "" }` + +describe('FileUploader', () => { + let originalFetch: any + + beforeAll(() => { + originalFetch = (global as any).fetch + }) + + beforeEach(() => { + ;(global as any).fetch = jest.fn().mockImplementation(() => + Promise.resolve({ + text: () => Promise.resolve(sampleResponse) + }) + ) + }) + + afterAll(() => { + ;(global as any).fetch = originalFetch + }) + + it('should upload successfully', async (done) => { + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = 'test/upload' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).then((res: any) => { + expect(JSON.stringify(res)).toEqual( + JSON.stringify(JSON.parse(sampleResponse)) + ) + done() + }) + }) + + it('should an error when no files are provided', async (done) => { + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = 'test/upload' + const files: UploadFile[] = [] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { + expect(err.error.message).toEqual('At least one file must be provided.') + done() + }) + }) + + it('should throw an error when no sasJob is provided', async (done) => { + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = '' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { + expect(err.error.message).toEqual('sasJob must be provided.') + done() + }) + }) + + it('should throw an error when login is required', async (done) => { + ;(global as any).fetch = jest.fn().mockImplementation(() => + Promise.resolve({ + text: () => Promise.resolve('
') + }) + ) + + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = 'test' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { + expect(err.error.message).toEqual( + 'You must be logged in to upload a file.' + ) + done() + }) + }) + + it('should throw an error when invalid JSON is returned by the server', async (done) => { + ;(global as any).fetch = jest.fn().mockImplementation(() => + Promise.resolve({ + text: () => Promise.resolve('{invalid: "json"') + }) + ) + + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = 'test' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { + expect(err.error.message).toEqual( + 'Error while parsing json from upload response.' + ) + done() + }) + }) + + it('should throw an error when the server request fails', async (done) => { + ;(global as any).fetch = jest.fn().mockImplementation(() => + Promise.resolve({ + text: () => Promise.reject('{message: "Server error"}') + }) + ) + + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) + + const sasJob = 'test' + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ] + const params = { table: 'libtable' } + + fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { + expect(err.error.message).toEqual('Upload request failed.') + + done() + }) + }) +}) From 4b89e3762f68102b614912347eaa68689790ed90 Mon Sep 17 00:00:00 2001 From: Krishna Acondy Date: Mon, 2 Nov 2020 08:54:26 +0000 Subject: [PATCH 7/8] chore(file-uploader): remove duplication --- src/test/FileUploader.spec.ts | 52 ++++++++++++----------------------- 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/src/test/FileUploader.spec.ts b/src/test/FileUploader.spec.ts index b76b527..ac297ab 100644 --- a/src/test/FileUploader.spec.ts +++ b/src/test/FileUploader.spec.ts @@ -11,6 +11,18 @@ const sampleResponse = `{ "SYSWARNINGTEXT" : "" }` +const prepareFilesAndParams = () => { + const files: UploadFile[] = [ + { + file: new File([''], 'testfile'), + fileName: 'testfile' + } + ] + const params = { table: 'libtable' } + + return { files, params } +} + describe('FileUploader', () => { let originalFetch: any @@ -40,13 +52,7 @@ describe('FileUploader', () => { ) const sasJob = 'test/upload' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ] - const params = { table: 'libtable' } + const { files, params } = prepareFilesAndParams() fileUploader.uploadFile(sasJob, files, params).then((res: any) => { expect(JSON.stringify(res)).toEqual( @@ -85,13 +91,7 @@ describe('FileUploader', () => { ) const sasJob = '' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ] - const params = { table: 'libtable' } + const { files, params } = prepareFilesAndParams() fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { expect(err.error.message).toEqual('sasJob must be provided.') @@ -115,13 +115,7 @@ describe('FileUploader', () => { ) const sasJob = 'test' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ] - const params = { table: 'libtable' } + const { files, params } = prepareFilesAndParams() fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { expect(err.error.message).toEqual( @@ -147,13 +141,7 @@ describe('FileUploader', () => { ) const sasJob = 'test' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ] - const params = { table: 'libtable' } + const { files, params } = prepareFilesAndParams() fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { expect(err.error.message).toEqual( @@ -179,13 +167,7 @@ describe('FileUploader', () => { ) const sasJob = 'test' - const files: UploadFile[] = [ - { - file: new File([''], 'testfile'), - fileName: 'testfile' - } - ] - const params = { table: 'libtable' } + const { files, params } = prepareFilesAndParams() fileUploader.uploadFile(sasJob, files, params).catch((err: any) => { expect(err.error.message).toEqual('Upload request failed.') From d1f1a20126a5f107eaac6e3c0c4bd245faf02144 Mon Sep 17 00:00:00 2001 From: Krishna Acondy Date: Mon, 2 Nov 2020 09:29:33 +0000 Subject: [PATCH 8/8] chore(file-uploader): move uploader to describe scope --- src/test/FileUploader.spec.ts | 55 +++++------------------------------ 1 file changed, 7 insertions(+), 48 deletions(-) diff --git a/src/test/FileUploader.spec.ts b/src/test/FileUploader.spec.ts index ac297ab..a9fa746 100644 --- a/src/test/FileUploader.spec.ts +++ b/src/test/FileUploader.spec.ts @@ -25,6 +25,13 @@ const prepareFilesAndParams = () => { describe('FileUploader', () => { let originalFetch: any + const fileUploader = new FileUploader( + '/sample/apploc', + 'https://sample.server.com', + '/jobs/path', + null, + null + ) beforeAll(() => { originalFetch = (global as any).fetch @@ -43,14 +50,6 @@ describe('FileUploader', () => { }) it('should upload successfully', async (done) => { - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - const sasJob = 'test/upload' const { files, params } = prepareFilesAndParams() @@ -63,14 +62,6 @@ describe('FileUploader', () => { }) it('should an error when no files are provided', async (done) => { - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - const sasJob = 'test/upload' const files: UploadFile[] = [] const params = { table: 'libtable' } @@ -82,14 +73,6 @@ describe('FileUploader', () => { }) it('should throw an error when no sasJob is provided', async (done) => { - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - const sasJob = '' const { files, params } = prepareFilesAndParams() @@ -106,14 +89,6 @@ describe('FileUploader', () => { }) ) - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - const sasJob = 'test' const { files, params } = prepareFilesAndParams() @@ -132,14 +107,6 @@ describe('FileUploader', () => { }) ) - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - const sasJob = 'test' const { files, params } = prepareFilesAndParams() @@ -158,14 +125,6 @@ describe('FileUploader', () => { }) ) - const fileUploader = new FileUploader( - '/sample/apploc', - 'https://sample.server.com', - '/jobs/path', - null, - null - ) - const sasJob = 'test' const { files, params } = prepareFilesAndParams()