Skip to content

Commit 91fbb89

Browse files
author
Ben Warzeski
authored
chore: update integration tests (openedx#109)
1 parent 5aecd88 commit 91fbb89

File tree

4 files changed

+57
-25
lines changed

4 files changed

+57
-25
lines changed

src/test/app.test.jsx

+50-24
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ const mockApi = () => {
124124
};
125125
},
126126
));
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)
129129
));
130130
api.lockSubmission = jest.fn(() => new Promise(
131131
(resolve, reject) => {
@@ -187,7 +187,7 @@ const initialize = async () => {
187187
*/
188188
const makeTableSelections = async () => {
189189
[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));
191191
// wait for navigation, which will show while request is pending
192192
try {
193193
await inspector.find.review.prevNav();
@@ -404,10 +404,12 @@ describe('ESG app integration tests', () => {
404404
await waitForRequestStatus(RequestKeys.fetchSubmission, RequestStates.completed);
405405
await userEvent.click(await inspector.find.review.startGradingBtn());
406406
});
407+
407408
describe('active grading', () => {
408409
beforeEach(async () => {
409410
await resolveFns.lock.success();
410411
});
412+
411413
const selectedOptions = [1, 2];
412414
const feedback = ['feedback 0', 'feedback 1'];
413415
const overallFeedback = 'some overall feedback';
@@ -427,22 +429,17 @@ describe('ESG app integration tests', () => {
427429
await userEvent.type(criterionFeedback(0), feedback[0]);
428430
await userEvent.click(options[1]);
429431
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);
434433
return;
435-
436434
};
437435

438436
// 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];
442439
const checkCriteria = (index) => {
443440
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);
446443
expect(criterion.feedback).toEqual(feedback[index]);
447444
}
448445
[0, 1].forEach(checkCriteria);
@@ -464,6 +461,22 @@ describe('ESG app integration tests', () => {
464461
expect(current.gradeStatus).toEqual(gradeStatuses.graded);
465462
expect(current.lockStatus).toEqual(lockStatuses.unlocked);
466463
}
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+
}
467480
/*
468481
test('submit pending', async (done) => {
469482
done();
@@ -472,17 +485,30 @@ describe('ESG app integration tests', () => {
472485
done();
473486
});
474487
*/
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+
);
486512
});
487513
});
488514
});

src/test/inspector.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class Inspector {
3232
return {
3333
table,
3434
tableRows,
35-
selectedBtn: () => this.getByText('View selected responses (5)'),
35+
selectedBtn: (num) => this.getByText(`View selected responses (${num})`),
3636
loadingResponses: () => this.getByText(appMessages.ListView.loadingResponses),
3737
listCheckbox: (index) => (
3838
within(tableRows().item(index)).getByTitle('Toggle Row Selected')
@@ -100,6 +100,7 @@ class Inspector {
100100
),
101101
loadErrorHeading: () => this.findByText(appMessages.ReviewErrors.loadErrorHeading),
102102
startGradingBtn: () => this.findByText(appMessages.ReviewActionsComponents.startGrading),
103+
overrideGradeBtn: () => this.findByText(appMessages.ReviewActionsComponents.overrideGrade),
103104
submitGradeBtn: () => this.findByText(appMessages.Rubric.submitGrade),
104105
},
105106
};

src/utils/StrictDict.js

+4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ const strictGet = (target, name) => {
44
return target;
55
}
66

7+
if (name === '$$typeof') {
8+
return typeof target;
9+
}
10+
711
if (name in target || name === '_reactFragment') {
812
return target[name];
913
}

src/utils/StrictDict.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ describe('StrictDict', () => {
4444
});
4545
it('allows type querying', () => {
4646
expect(typeof dict).toEqual('object');
47+
expect(dict.$$typeof).toEqual('object');
4748
});
4849
it('allows entry listing', () => {
4950
expect(Object.entries(dict)).toEqual(Object.entries(rawDict));

0 commit comments

Comments
 (0)