diff --git a/client/cypress/fixtures/module.minimal.js b/client/cypress/fixtures/module.minimal.js index e2f91121..80900ba9 100644 --- a/client/cypress/fixtures/module.minimal.js +++ b/client/cypress/fixtures/module.minimal.js @@ -6,7 +6,7 @@ export default { intro: 'intro', assignments: {}, objectiveGroups: [], - id: '', + id: 'TW9kdWxlTm9kZToxMjM=', chapters: [], topic: { title: 'A Topic Mock Title', diff --git a/client/cypress/integration/frontend/snapshots.spec.js b/client/cypress/integration/frontend/snapshots.spec.js index 66c0d34f..07a69898 100644 --- a/client/cypress/integration/frontend/snapshots.spec.js +++ b/client/cypress/integration/frontend/snapshots.spec.js @@ -19,6 +19,7 @@ describe('Snapshot', () => { success: true, }, }, + UpdateLastModule: {}, ModuleSnapshotsQuery: { module: { ...module, diff --git a/client/src/pages/studentSubmission.vue b/client/src/pages/studentSubmission.vue index 3814be22..024581ad 100644 --- a/client/src/pages/studentSubmission.vue +++ b/client/src/pages/studentSubmission.vue @@ -218,27 +218,32 @@ const variables = { id: this.studentSubmission.id, }; - const data = store.readQuery({query, variables}); + const { studentSubmission } = store.readQuery({query, variables}); - if (data) { - if (!data.studentSubmission.submissionFeedback) { - data.studentSubmission.submissionFeedback = { - '__typename': 'SubmissionFeedbackNode', - }; - } - - data.studentSubmission.submissionFeedback = Object.assign({}, data.studentSubmission.submissionFeedback, { - id: updatedSubmissionFeedback.id, - final: updatedSubmissionFeedback.final, - }); + if (studentSubmission) { + let text; if (updatedSubmissionFeedback.text !== undefined) { // text is only being set on create and on turning in, then we'll update the cache with it. Otherwise, we'll trust the local state, as to not overwrite the input field - data.studentSubmission.submissionFeedback.text = updatedSubmissionFeedback.text; + text = updatedSubmissionFeedback.text; } else { - data.studentSubmission.submissionFeedback.text = this.studentSubmission.submissionFeedback ? this.studentSubmission.submissionFeedback.text : ''; + text = this.studentSubmission.submissionFeedback ? this.studentSubmission.submissionFeedback.text : ''; } + const submissionFeedback = Object.assign({}, studentSubmission.submissionFeedback, { + id: updatedSubmissionFeedback.id, + final: updatedSubmissionFeedback.final, + '__typename': 'SubmissionFeedbackNode', + text + }); + + const data = { + studentSubmission: { + ...studentSubmission, + submissionFeedback + } + }; + store.writeQuery({query, variables, data}); } }