Skip to content

Commit 3a8fe3f

Browse files
committed
reorganized switch and conditionals to be clearer; clarified test names
1 parent a4e2711 commit 3a8fe3f

File tree

2 files changed

+55
-56
lines changed

2 files changed

+55
-56
lines changed

src/reducers/project-state.js

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -413,42 +413,30 @@ const onFetchedProjectData = (projectData, loadingState) => {
413413
};
414414

415415
const onLoadedProject = (loadingState, canSave, success) => {
416-
if (success) {
417-
switch (loadingState) {
418-
case LoadingState.LOADING_VM_WITH_ID:
419-
return {
420-
type: DONE_LOADING_VM_WITH_ID
421-
};
422-
case LoadingState.LOADING_VM_FILE_UPLOAD:
416+
switch (loadingState) {
417+
case LoadingState.LOADING_VM_WITH_ID:
418+
if (success) {
419+
return {type: DONE_LOADING_VM_WITH_ID};
420+
}
421+
// failed to load project; just keep showing current project
422+
return {type: RETURN_TO_SHOWING};
423+
case LoadingState.LOADING_VM_FILE_UPLOAD:
424+
if (success) {
423425
if (canSave) {
424-
return {
425-
type: DONE_LOADING_VM_TO_SAVE
426-
};
426+
return {type: DONE_LOADING_VM_TO_SAVE};
427427
}
428-
return {
429-
type: DONE_LOADING_VM_WITHOUT_ID
430-
};
431-
case LoadingState.LOADING_VM_NEW_DEFAULT:
432-
return {
433-
type: DONE_LOADING_VM_WITHOUT_ID
434-
};
435-
default:
436-
return;
428+
return {type: DONE_LOADING_VM_WITHOUT_ID};
437429
}
438-
} else {
439-
switch (loadingState) {
440-
case LoadingState.LOADING_VM_WITH_ID:
441-
case LoadingState.LOADING_VM_FILE_UPLOAD:
442-
return {
443-
type: RETURN_TO_SHOWING
444-
};
445-
case LoadingState.LOADING_VM_NEW_DEFAULT:
446-
return {
447-
type: START_ERROR
448-
};
449-
default:
450-
return;
430+
// failed to load project; just keep showing current project
431+
return {type: RETURN_TO_SHOWING};
432+
case LoadingState.LOADING_VM_NEW_DEFAULT:
433+
if (success) {
434+
return {type: DONE_LOADING_VM_WITHOUT_ID};
451435
}
436+
// failed to load default project; show error
437+
return {type: START_ERROR};
438+
default:
439+
return;
452440
}
453441
};
454442

test/unit/reducers/project-state-reducer.test.js

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ test('onFetchedProjectData new loads project data into vm', () => {
9494

9595
// onLoadedProject: LOADING_VM_WITH_ID
9696

97-
test('onLoadedProject (LOADING_VM_WITH_ID, true, true) shows with id', () => {
97+
test('onLoadedProject(LOADING_VM_WITH_ID, true, true) results in state SHOWING_WITH_ID', () => {
9898
const initialState = {
9999
loadingState: LoadingState.LOADING_VM_WITH_ID
100100
};
@@ -103,7 +103,7 @@ test('onLoadedProject (LOADING_VM_WITH_ID, true, true) shows with id', () => {
103103
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITH_ID);
104104
});
105105

106-
test('onLoadedProject (LOADING_VM_WITH_ID, false, true) shows with id', () => {
106+
test('onLoadedProject(LOADING_VM_WITH_ID, false, true) results in state SHOWING_WITH_ID', () => {
107107
const initialState = {
108108
loadingState: LoadingState.LOADING_VM_WITH_ID
109109
};
@@ -112,7 +112,8 @@ test('onLoadedProject (LOADING_VM_WITH_ID, false, true) shows with id', () => {
112112
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITH_ID);
113113
});
114114

115-
test('onLoadedProject (LOADING_VM_WITH_ID, false, false), with project id, shows with id', () => {
115+
test('onLoadedProject(LOADING_VM_WITH_ID, false, false), with project id, ' +
116+
'results in state SHOWING_WITH_ID', () => {
116117
const initialState = {
117118
loadingState: LoadingState.LOADING_VM_WITH_ID,
118119
projectId: '12345'
@@ -122,7 +123,8 @@ test('onLoadedProject (LOADING_VM_WITH_ID, false, false), with project id, shows
122123
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITH_ID);
123124
});
124125

125-
test('onLoadedProject (LOADING_VM_WITH_ID, false, false), with no project id, shows without id', () => {
126+
test('onLoadedProject(LOADING_VM_WITH_ID, false, false), with no project id, ' +
127+
'results in state SHOWING_WITHOUT_ID', () => {
126128
const initialState = {
127129
loadingState: LoadingState.LOADING_VM_WITH_ID,
128130
projectId: null
@@ -143,7 +145,7 @@ test('onLoadedProject(LOADING_VM_FILE_UPLOAD, true, true) prepares to save', ()
143145
expect(resultState.loadingState).toBe(LoadingState.AUTO_UPDATING);
144146
});
145147

146-
test('onLoadedProject (LOADING_VM_FILE_UPLOAD, false, true) shows without id', () => {
148+
test('onLoadedProject(LOADING_VM_FILE_UPLOAD, false, true) results in state SHOWING_WITHOUT_ID', () => {
147149
const initialState = {
148150
loadingState: LoadingState.LOADING_VM_FILE_UPLOAD
149151
};
@@ -152,7 +154,8 @@ test('onLoadedProject (LOADING_VM_FILE_UPLOAD, false, true) shows without id', (
152154
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITHOUT_ID);
153155
});
154156

155-
test('onLoadedProject (LOADING_VM_FILE_UPLOAD, false, false), with project id, shows with id', () => {
157+
test('onLoadedProject(LOADING_VM_FILE_UPLOAD, false, false), when we know project id, ' +
158+
'results in state SHOWING_WITH_ID', () => {
156159
const initialState = {
157160
loadingState: LoadingState.LOADING_VM_FILE_UPLOAD,
158161
projectId: '12345'
@@ -162,7 +165,8 @@ test('onLoadedProject (LOADING_VM_FILE_UPLOAD, false, false), with project id, s
162165
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITH_ID);
163166
});
164167

165-
test('onLoadedProject (LOADING_VM_FILE_UPLOAD, false, false), with no project id, shows without id', () => {
168+
test('onLoadedProject(LOADING_VM_FILE_UPLOAD, false, false), when we ' +
169+
'don\'t know project id, results in state SHOWING_WITHOUT_ID', () => {
166170
const initialState = {
167171
loadingState: LoadingState.LOADING_VM_FILE_UPLOAD,
168172
projectId: null
@@ -174,7 +178,7 @@ test('onLoadedProject (LOADING_VM_FILE_UPLOAD, false, false), with no project id
174178

175179
// onLoadedProject: LOADING_VM_NEW_DEFAULT
176180

177-
test('onLoadedProject (LOADING_VM_NEW_DEFAULT, true, true) shows without id', () => {
181+
test('onLoadedProject(LOADING_VM_NEW_DEFAULT, true, true) results in state SHOWING_WITHOUT_ID', () => {
178182
const initialState = {
179183
loadingState: LoadingState.LOADING_VM_NEW_DEFAULT
180184
};
@@ -183,7 +187,7 @@ test('onLoadedProject (LOADING_VM_NEW_DEFAULT, true, true) shows without id', ()
183187
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITHOUT_ID);
184188
});
185189

186-
test('onLoadedProject (LOADING_VM_NEW_DEFAULT, false, true) shows without id', () => {
190+
test('onLoadedProject(LOADING_VM_NEW_DEFAULT, false, true) results in state SHOWING_WITHOUT_ID', () => {
187191
const initialState = {
188192
loadingState: LoadingState.LOADING_VM_NEW_DEFAULT
189193
};
@@ -192,7 +196,7 @@ test('onLoadedProject (LOADING_VM_NEW_DEFAULT, false, true) shows without id', (
192196
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITHOUT_ID);
193197
});
194198

195-
test('onLoadedProject (LOADING_VM_NEW_DEFAULT, false, false) shows error', () => {
199+
test('onLoadedProject(LOADING_VM_NEW_DEFAULT, false, false) results in ERROR state', () => {
196200
const initialState = {
197201
loadingState: LoadingState.LOADING_VM_NEW_DEFAULT
198202
};
@@ -203,7 +207,7 @@ test('onLoadedProject (LOADING_VM_NEW_DEFAULT, false, false) shows error', () =>
203207

204208
// doneUpdatingProject
205209

206-
test('doneUpdatingProject with id shows with id', () => {
210+
test('doneUpdatingProject with id results in state SHOWING_WITH_ID', () => {
207211
const initialState = {
208212
loadingState: LoadingState.MANUAL_UPDATING
209213
};
@@ -212,7 +216,7 @@ test('doneUpdatingProject with id shows with id', () => {
212216
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITH_ID);
213217
});
214218

215-
test('doneUpdatingProject with id, before copy, creates copy', () => {
219+
test('doneUpdatingProject with id, before copy occurs, results in state CREATING_COPY', () => {
216220
const initialState = {
217221
loadingState: LoadingState.UPDATING_BEFORE_COPY
218222
};
@@ -221,7 +225,7 @@ test('doneUpdatingProject with id, before copy, creates copy', () => {
221225
expect(resultState.loadingState).toBe(LoadingState.CREATING_COPY);
222226
});
223227

224-
test('doneUpdatingProject with id, before new, fetches default project', () => {
228+
test('doneUpdatingProject with id, before new, results in state FETCHING_NEW_DEFAULT', () => {
225229
const initialState = {
226230
loadingState: LoadingState.UPDATING_BEFORE_NEW
227231
};
@@ -230,7 +234,8 @@ test('doneUpdatingProject with id, before new, fetches default project', () => {
230234
expect(resultState.loadingState).toBe(LoadingState.FETCHING_NEW_DEFAULT);
231235
});
232236

233-
test('setProjectId, with same id as before, should show with id, not fetch', () => {
237+
test('calling setProjectId, using with same id as already showing, ' +
238+
'results in state SHOWING_WITH_ID', () => {
234239
const initialState = {
235240
projectId: '100',
236241
loadingState: LoadingState.SHOWING_WITH_ID
@@ -241,7 +246,8 @@ test('setProjectId, with same id as before, should show with id, not fetch', ()
241246
expect(resultState.projectId).toBe('100');
242247
});
243248

244-
test('setProjectId, with different id as before, should fetch with id, not show with id', () => {
249+
test('calling setProjectId, using different id from project already showing, ' +
250+
'results in state FETCHING_WITH_ID', () => {
245251
const initialState = {
246252
projectId: 99,
247253
loadingState: LoadingState.SHOWING_WITH_ID
@@ -252,7 +258,8 @@ test('setProjectId, with different id as before, should fetch with id, not show
252258
expect(resultState.projectId).toBe('100');
253259
});
254260

255-
test('setProjectId, with same id as before, but not same type, should fetch because not ===', () => {
261+
test('setProjectId, with same id as before, but not same type, ' +
262+
'results in FETCHING_WITH_ID because the two projectIds are not strictly equal', () => {
256263
const initialState = {
257264
projectId: '100',
258265
loadingState: LoadingState.SHOWING_WITH_ID
@@ -263,7 +270,7 @@ test('setProjectId, with same id as before, but not same type, should fetch beca
263270
expect(resultState.projectId).toBe(100);
264271
});
265272

266-
test('requestNewProject, when can\'t create new, should fetch default project without id', () => {
273+
test('requestNewProject, when can\'t create/save, results in FETCHING_NEW_DEFAULT', () => {
267274
const initialState = {
268275
loadingState: LoadingState.SHOWING_WITHOUT_ID
269276
};
@@ -272,7 +279,8 @@ test('requestNewProject, when can\'t create new, should fetch default project wi
272279
expect(resultState.loadingState).toBe(LoadingState.FETCHING_NEW_DEFAULT);
273280
});
274281

275-
test('requestNewProject, when can create new, should save and prepare to fetch default project', () => {
282+
test('requestNewProject, when can create/save, results in UPDATING_BEFORE_NEW ' +
283+
'(in order to save before fetching default project)', () => {
276284
const initialState = {
277285
loadingState: LoadingState.SHOWING_WITH_ID
278286
};
@@ -281,7 +289,7 @@ test('requestNewProject, when can create new, should save and prepare to fetch d
281289
expect(resultState.loadingState).toBe(LoadingState.UPDATING_BEFORE_NEW);
282290
});
283291

284-
test('requestProjectUpload when project not loaded should load', () => {
292+
test('requestProjectUpload when project not loaded results in state LOADING_VM_FILE_UPLOAD', () => {
285293
const initialState = {
286294
loadingState: LoadingState.NOT_LOADED
287295
};
@@ -290,7 +298,7 @@ test('requestProjectUpload when project not loaded should load', () => {
290298
expect(resultState.loadingState).toBe(LoadingState.LOADING_VM_FILE_UPLOAD);
291299
});
292300

293-
test('requestProjectUpload when showing project with id should load', () => {
301+
test('requestProjectUpload when showing project with id results in state LOADING_VM_FILE_UPLOAD', () => {
294302
const initialState = {
295303
loadingState: LoadingState.SHOWING_WITH_ID
296304
};
@@ -299,7 +307,7 @@ test('requestProjectUpload when showing project with id should load', () => {
299307
expect(resultState.loadingState).toBe(LoadingState.LOADING_VM_FILE_UPLOAD);
300308
});
301309

302-
test('requestProjectUpload when showing project without id should load', () => {
310+
test('requestProjectUpload when showing project without id results in state LOADING_VM_FILE_UPLOAD', () => {
303311
const initialState = {
304312
loadingState: LoadingState.SHOWING_WITHOUT_ID
305313
};
@@ -405,7 +413,8 @@ test('non-fatal projectError should show normal state', () => {
405413
}
406414
});
407415

408-
test('projectError when creating new while viewing project with id should show project with id', () => {
416+
test('projectError when creating new while viewing project with id should ' +
417+
'go back to state SHOWING_WITH_ID', () => {
409418
const initialState = {
410419
error: null,
411420
loadingState: LoadingState.CREATING_NEW,
@@ -416,7 +425,8 @@ test('projectError when creating new while viewing project with id should show p
416425
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITH_ID);
417426
});
418427

419-
test('projectError when creating new while logged out, looking at default project should show default project', () => {
428+
test('projectError when creating new while logged out, looking at default project ' +
429+
'should go back to state SHOWING_WITHOUT_ID', () => {
420430
const initialState = {
421431
error: null,
422432
loadingState: LoadingState.CREATING_NEW,
@@ -427,7 +437,8 @@ test('projectError when creating new while logged out, looking at default projec
427437
expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITHOUT_ID);
428438
});
429439

430-
test('projectError from showing project should show error', () => {
440+
test('projectError encountered while in state FETCHING_WITH_ID results in ' +
441+
'ERROR state', () => {
431442
const initialState = {
432443
error: null,
433444
loadingState: LoadingState.FETCHING_WITH_ID

0 commit comments

Comments
 (0)