chore: update integration tests (#109)

This commit is contained in:
Ben Warzeski
2022-05-11 14:14:25 -04:00
committed by GitHub
parent 5aecd88c70
commit 91fbb8978a
4 changed files with 57 additions and 25 deletions

View File

@@ -124,8 +124,8 @@ const mockApi = () => {
};
},
));
api.fetchSubmissionStatus = jest.fn((submissionUUID) => new Promise(
(resolve) => resolve(fakeData.mockSubmissionStatus(submissionUUID)),
api.fetchSubmissionStatus = jest.fn((submissionUUID) => Promise.resolve(
fakeData.mockSubmissionStatus(submissionUUID)
));
api.lockSubmission = jest.fn(() => new Promise(
(resolve, reject) => {
@@ -187,7 +187,7 @@ const initialize = async () => {
*/
const makeTableSelections = async () => {
[0, 1, 2, 3, 4].forEach(index => userEvent.click(inspector.listView.listCheckbox(index)));
userEvent.click(inspector.listView.selectedBtn());
userEvent.click(inspector.listView.selectedBtn(5));
// wait for navigation, which will show while request is pending
try {
await inspector.find.review.prevNav();
@@ -404,10 +404,12 @@ describe('ESG app integration tests', () => {
await waitForRequestStatus(RequestKeys.fetchSubmission, RequestStates.completed);
await userEvent.click(await inspector.find.review.startGradingBtn());
});
describe('active grading', () => {
beforeEach(async () => {
await resolveFns.lock.success();
});
const selectedOptions = [1, 2];
const feedback = ['feedback 0', 'feedback 1'];
const overallFeedback = 'some overall feedback';
@@ -427,22 +429,17 @@ describe('ESG app integration tests', () => {
await userEvent.type(criterionFeedback(0), feedback[0]);
await userEvent.click(options[1]);
await userEvent.type(criterionFeedback(1), feedback[1]);
await userEvent.type(
inspector.review.rubric.feedbackInput(),
overallFeedback
);
await userEvent.type(inspector.review.rubric.feedbackInput(), overallFeedback);
return;
};
// Verify active-grading state
const checkGradingState = () => {
const { gradingData } = getState().grading;
const entry = gradingData[submissionUUIDs[0]];
const checkGradingState = (submissionUUID=submissionUUIDs[0]) => {
const entry = getState().grading.gradingData[submissionUUID];
const checkCriteria = (index) => {
const criterion = entry.criteria[index];
const rubricOptions = rubricConfig.criteria[index].options;
expect(criterion.selectedOption).toEqual(rubricOptions[selectedOptions[index]].name);
const selected = rubricConfig.criteria[index].options[selectedOptions[index]].name;
expect(criterion.selectedOption).toEqual(selected);
expect(criterion.feedback).toEqual(feedback[index]);
}
[0, 1].forEach(checkCriteria);
@@ -464,6 +461,22 @@ describe('ESG app integration tests', () => {
expect(current.gradeStatus).toEqual(gradeStatuses.graded);
expect(current.lockStatus).toEqual(lockStatuses.unlocked);
}
const loadNext = async () => {
await userEvent.click(inspector.review.nextNav());
await resolveFns.fetch.success();
};
const loadPrev = async () => {
await userEvent.click(inspector.review.prevNav());
await resolveFns.fetch.success();
}
const startGrading = async () => {
await waitForRequestStatus(RequestKeys.fetchSubmission, RequestStates.completed);
await userEvent.click(await inspector.find.review.startGradingBtn());
await resolveFns.lock.success();
}
/*
test('submit pending', async (done) => {
done();
@@ -472,17 +485,30 @@ describe('ESG app integration tests', () => {
done();
});
*/
test('submit grade (success)', async (done) => {
expect(await inspector.find.review.submitGradeBtn()).toBeVisible();
await setGrade();
// checkGradingState();
/*
await userEvent.click(inspector.review.rubric.submitGradeBtn());
await resolveFns.updateGrade.success();
checkGradeSuccess();
*/
done();
});
test('grade and submit',
async (done) => {
expect(await inspector.find.review.submitGradeBtn()).toBeVisible();
await setGrade();
checkGradingState();
await userEvent.click(inspector.review.rubric.submitGradeBtn());
await resolveFns.updateGrade.success();
checkGradeSuccess();
done();
},
);
test('grade, navigate, and return, maintaining gradingState',
async (done) => {
expect(await inspector.find.review.submitGradeBtn()).toBeVisible();
await setGrade();
checkGradingState();
await loadNext();
await waitForEqual(() => getState().grading.activeIndex, 1, 'activeIndex');
await loadPrev();
await waitForEqual(() => getState().grading.activeIndex, 0, 'activeIndex');
checkGradingState();
done();
},
);
});
});
});

View File

@@ -32,7 +32,7 @@ class Inspector {
return {
table,
tableRows,
selectedBtn: () => this.getByText('View selected responses (5)'),
selectedBtn: (num) => this.getByText(`View selected responses (${num})`),
loadingResponses: () => this.getByText(appMessages.ListView.loadingResponses),
listCheckbox: (index) => (
within(tableRows().item(index)).getByTitle('Toggle Row Selected')
@@ -100,6 +100,7 @@ class Inspector {
),
loadErrorHeading: () => this.findByText(appMessages.ReviewErrors.loadErrorHeading),
startGradingBtn: () => this.findByText(appMessages.ReviewActionsComponents.startGrading),
overrideGradeBtn: () => this.findByText(appMessages.ReviewActionsComponents.overrideGrade),
submitGradeBtn: () => this.findByText(appMessages.Rubric.submitGrade),
},
};

View File

@@ -4,6 +4,10 @@ const strictGet = (target, name) => {
return target;
}
if (name === '$$typeof') {
return typeof target;
}
if (name in target || name === '_reactFragment') {
return target[name];
}

View File

@@ -44,6 +44,7 @@ describe('StrictDict', () => {
});
it('allows type querying', () => {
expect(typeof dict).toEqual('object');
expect(dict.$$typeof).toEqual('object');
});
it('allows entry listing', () => {
expect(Object.entries(dict)).toEqual(Object.entries(rawDict));