@@ -124,8 +124,8 @@ const mockApi = () => {
124
124
} ;
125
125
} ,
126
126
) ) ;
127
- api . fetchSubmissionStatus = jest . fn ( ( submissionUUID ) => new Promise (
128
- ( resolve ) => resolve ( fakeData . mockSubmissionStatus ( submissionUUID ) ) ,
127
+ api . fetchSubmissionStatus = jest . fn ( ( submissionUUID ) => Promise . resolve (
128
+ fakeData . mockSubmissionStatus ( submissionUUID )
129
129
) ) ;
130
130
api . lockSubmission = jest . fn ( ( ) => new Promise (
131
131
( resolve , reject ) => {
@@ -187,7 +187,7 @@ const initialize = async () => {
187
187
*/
188
188
const makeTableSelections = async ( ) => {
189
189
[ 0 , 1 , 2 , 3 , 4 ] . forEach ( index => userEvent . click ( inspector . listView . listCheckbox ( index ) ) ) ;
190
- userEvent . click ( inspector . listView . selectedBtn ( ) ) ;
190
+ userEvent . click ( inspector . listView . selectedBtn ( 5 ) ) ;
191
191
// wait for navigation, which will show while request is pending
192
192
try {
193
193
await inspector . find . review . prevNav ( ) ;
@@ -404,10 +404,12 @@ describe('ESG app integration tests', () => {
404
404
await waitForRequestStatus ( RequestKeys . fetchSubmission , RequestStates . completed ) ;
405
405
await userEvent . click ( await inspector . find . review . startGradingBtn ( ) ) ;
406
406
} ) ;
407
+
407
408
describe ( 'active grading' , ( ) => {
408
409
beforeEach ( async ( ) => {
409
410
await resolveFns . lock . success ( ) ;
410
411
} ) ;
412
+
411
413
const selectedOptions = [ 1 , 2 ] ;
412
414
const feedback = [ 'feedback 0' , 'feedback 1' ] ;
413
415
const overallFeedback = 'some overall feedback' ;
@@ -427,22 +429,17 @@ describe('ESG app integration tests', () => {
427
429
await userEvent . type ( criterionFeedback ( 0 ) , feedback [ 0 ] ) ;
428
430
await userEvent . click ( options [ 1 ] ) ;
429
431
await userEvent . type ( criterionFeedback ( 1 ) , feedback [ 1 ] ) ;
430
- await userEvent . type (
431
- inspector . review . rubric . feedbackInput ( ) ,
432
- overallFeedback
433
- ) ;
432
+ await userEvent . type ( inspector . review . rubric . feedbackInput ( ) , overallFeedback ) ;
434
433
return ;
435
-
436
434
} ;
437
435
438
436
// Verify active-grading state
439
- const checkGradingState = ( ) => {
440
- const { gradingData } = getState ( ) . grading ;
441
- const entry = gradingData [ submissionUUIDs [ 0 ] ] ;
437
+ const checkGradingState = ( submissionUUID = submissionUUIDs [ 0 ] ) => {
438
+ const entry = getState ( ) . grading . gradingData [ submissionUUID ] ;
442
439
const checkCriteria = ( index ) => {
443
440
const criterion = entry . criteria [ index ] ;
444
- const rubricOptions = rubricConfig . criteria [ index ] . options ;
445
- expect ( criterion . selectedOption ) . toEqual ( rubricOptions [ selectedOptions [ index ] ] . name ) ;
441
+ const selected = rubricConfig . criteria [ index ] . options [ selectedOptions [ index ] ] . name ;
442
+ expect ( criterion . selectedOption ) . toEqual ( selected ) ;
446
443
expect ( criterion . feedback ) . toEqual ( feedback [ index ] ) ;
447
444
}
448
445
[ 0 , 1 ] . forEach ( checkCriteria ) ;
@@ -464,6 +461,22 @@ describe('ESG app integration tests', () => {
464
461
expect ( current . gradeStatus ) . toEqual ( gradeStatuses . graded ) ;
465
462
expect ( current . lockStatus ) . toEqual ( lockStatuses . unlocked ) ;
466
463
}
464
+
465
+ const loadNext = async ( ) => {
466
+ await userEvent . click ( inspector . review . nextNav ( ) ) ;
467
+ await resolveFns . fetch . success ( ) ;
468
+ } ;
469
+
470
+ const loadPrev = async ( ) => {
471
+ await userEvent . click ( inspector . review . prevNav ( ) ) ;
472
+ await resolveFns . fetch . success ( ) ;
473
+ }
474
+
475
+ const startGrading = async ( ) => {
476
+ await waitForRequestStatus ( RequestKeys . fetchSubmission , RequestStates . completed ) ;
477
+ await userEvent . click ( await inspector . find . review . startGradingBtn ( ) ) ;
478
+ await resolveFns . lock . success ( ) ;
479
+ }
467
480
/*
468
481
test('submit pending', async (done) => {
469
482
done();
@@ -472,17 +485,30 @@ describe('ESG app integration tests', () => {
472
485
done();
473
486
});
474
487
*/
475
- test ( 'submit grade (success)' , async ( done ) => {
476
- expect ( await inspector . find . review . submitGradeBtn ( ) ) . toBeVisible ( ) ;
477
- await setGrade ( ) ;
478
- // checkGradingState();
479
- /*
480
- await userEvent.click(inspector.review.rubric.submitGradeBtn());
481
- await resolveFns.updateGrade.success();
482
- checkGradeSuccess();
483
- */
484
- done ( ) ;
485
- } ) ;
488
+ test ( 'grade and submit' ,
489
+ async ( done ) => {
490
+ expect ( await inspector . find . review . submitGradeBtn ( ) ) . toBeVisible ( ) ;
491
+ await setGrade ( ) ;
492
+ checkGradingState ( ) ;
493
+ await userEvent . click ( inspector . review . rubric . submitGradeBtn ( ) ) ;
494
+ await resolveFns . updateGrade . success ( ) ;
495
+ checkGradeSuccess ( ) ;
496
+ done ( ) ;
497
+ } ,
498
+ ) ;
499
+ test ( 'grade, navigate, and return, maintaining gradingState' ,
500
+ async ( done ) => {
501
+ expect ( await inspector . find . review . submitGradeBtn ( ) ) . toBeVisible ( ) ;
502
+ await setGrade ( ) ;
503
+ checkGradingState ( ) ;
504
+ await loadNext ( ) ;
505
+ await waitForEqual ( ( ) => getState ( ) . grading . activeIndex , 1 , 'activeIndex' ) ;
506
+ await loadPrev ( ) ;
507
+ await waitForEqual ( ( ) => getState ( ) . grading . activeIndex , 0 , 'activeIndex' ) ;
508
+ checkGradingState ( ) ;
509
+ done ( ) ;
510
+ } ,
511
+ ) ;
486
512
} ) ;
487
513
} ) ;
488
514
} ) ;
0 commit comments