@@ -10,12 +10,12 @@ jest.mock("electron", () => ({
10
10
import { ipcRenderer } from "electron" ;
11
11
import * as AppConfig from "@/const/app-config"
12
12
13
- import { IpcJobEvent , Status } from "./types" ;
13
+ import { EventKey , IpcJobEvent , Status } from "./types" ;
14
14
import { uploadOptionsFromNewJob } from "./_mock-helpers_/data" ;
15
15
16
16
import UploadJob from "./upload-job" ;
17
17
18
- describe ( "test models/job/upload-job.ts" , ( ) => {
18
+ describe ( "test models/job/upload-job.ts" , ( ) => {
19
19
describe ( "test stop" , ( ) => {
20
20
it ( "stop" , ( ) => {
21
21
const uploadJob = new UploadJob ( uploadOptionsFromNewJob ) ;
@@ -94,4 +94,87 @@ describe("test models/job/upload-job.ts", () => {
94
94
uploadJob . stop ( ) ;
95
95
} ) ;
96
96
} ) ;
97
+
98
+ describe ( "test resume upload job" , ( ) => {
99
+ it ( "getInfoForSave()" , ( ) => {
100
+ const uploadJob = new UploadJob ( uploadOptionsFromNewJob ) ;
101
+ uploadJob . on ( 'partcomplete' , ( data ) => {
102
+ uploadJob . uploadedId = data . uploadId ;
103
+ uploadJob . uploadedParts [ data . part . partNumber ] = data . part ;
104
+ return false ;
105
+ } )
106
+
107
+ // stat
108
+ const fakeProgressTotal = 1024 ;
109
+ const fakeProgressResumable = true ;
110
+ uploadJob . startUpload ( null , {
111
+ key : EventKey . Stat ,
112
+ data : {
113
+ progressTotal : fakeProgressTotal ,
114
+ progressResumable : fakeProgressResumable ,
115
+ } ,
116
+ } ) ;
117
+ expect ( uploadJob . prog . total ) . toBe ( fakeProgressTotal ) ;
118
+ expect ( uploadJob . prog . resumable ) . toBe ( fakeProgressResumable ) ;
119
+
120
+ // progress
121
+ const fakeProgressLoaded = 512 ;
122
+ uploadJob . startUpload ( null , {
123
+ key : EventKey . Progress ,
124
+ data : {
125
+ progressLoaded : fakeProgressLoaded ,
126
+ progressResumable : fakeProgressResumable ,
127
+ } ,
128
+ } ) ;
129
+ expect ( uploadJob . prog . loaded ) . toBe ( fakeProgressLoaded ) ;
130
+ expect ( uploadJob . prog . resumable ) . toBe ( fakeProgressResumable ) ;
131
+
132
+ // part uploaded
133
+ const fakeUploadedId = 'fakeUploadId' ;
134
+ const fakeUploadedPart = {
135
+ partNumber : 0 ,
136
+ etag : 'fakeETag' ,
137
+ } ;
138
+ uploadJob . startUpload ( null , {
139
+ key : EventKey . PartUploaded ,
140
+ data : {
141
+ uploadId : fakeUploadedId ,
142
+ part : fakeUploadedPart ,
143
+ } ,
144
+ } ) ;
145
+ expect ( uploadJob . uploadedParts . length ) . toBe ( 1 ) ;
146
+ expect ( uploadJob . uploadedId ) . toBe ( fakeUploadedId ) ;
147
+ expect ( uploadJob . uploadedParts ) . toEqual ( [
148
+ fakeUploadedPart ,
149
+ ] ) ;
150
+
151
+ // info should in disk
152
+ expect ( uploadJob . getInfoForSave ( { } ) )
153
+ . toEqual ( {
154
+ from : uploadOptionsFromNewJob . from ,
155
+
156
+ backendMode : uploadOptionsFromNewJob . backendMode ,
157
+ overwrite : uploadOptionsFromNewJob . overwrite ,
158
+ to : uploadOptionsFromNewJob . to ,
159
+ region : uploadOptionsFromNewJob . region ,
160
+ storageClassName : uploadOptionsFromNewJob . storageClassName ,
161
+ storageClasses : uploadOptionsFromNewJob . storageClasses ,
162
+
163
+ prog : {
164
+ loaded : fakeProgressLoaded ,
165
+ total : fakeProgressTotal ,
166
+ resumable : fakeProgressResumable ,
167
+ } ,
168
+ status : Status . Waiting ,
169
+ uploadedId : fakeUploadedId ,
170
+ uploadedParts : [
171
+ {
172
+ PartNumber : fakeUploadedPart . partNumber ,
173
+ ETag : fakeUploadedPart . etag ,
174
+ } ,
175
+ ] ,
176
+ message : "" ,
177
+ } ) ;
178
+ } ) ;
179
+ } ) ;
97
180
} ) ;
0 commit comments