Skip to content

Commit

Permalink
Fix assign activity using code (Doenet#2444)
Browse files Browse the repository at this point in the history
  • Loading branch information
cqnykamp authored Jul 7, 2024
1 parent 54ef8a1 commit c9daa88
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 36 deletions.
4 changes: 1 addition & 3 deletions client/src/Tools/_framework/Paths/AllAssignmentScores.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,7 @@ type studentStructure = {
};

export async function loader({ params }) {
const { data } = await axios.get(
`/api/getAllAssignmentScores/${params.folderId}`,
);
const { data } = await axios.get(`/api/getAllAssignmentScores/${params.folderId ?? ""}`);

let studentData = {};
data.assignmentScores.forEach(function (assignment: assignmentStructure) {
Expand Down
47 changes: 22 additions & 25 deletions client/src/Tools/_framework/Paths/AssignmentViewer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,10 @@ export async function loader({ params }) {

// TODO: need to select variant for each student (just once)

if (params.assignmentId) {
if (params.activityId) {
// TODO: create this route
let { data } = await axios.get(
`/api/getAssignmentData/${params.assignmentId}`,
`/api/getAssignmentData/${params.activityId}`,
);
assignment = data;
} else if (params.classCode) {
Expand All @@ -61,25 +62,21 @@ export async function loader({ params }) {
userName = data.name;
}

let assignmentId = params.assignmentId;

// TODO: what happens if assignment has no documents?
let docId = assignment.assignmentDocuments[0].docId;
let docVersionId = assignment.assignmentDocuments[0].docVersionId;
const docId = assignment.documents[0].id;
const docVersionNum = assignment.documents[0].assignedVersionNum;

let doenetML = assignment.assignmentDocuments[0].documentVersion.content;
let doenetmlVersion =
assignment.assignmentDocuments[0].documentVersion.doenetmlVersion
.fullVersion;
const doenetML = assignment.documents[0].assignedVersion.source;
const doenetmlVersion =
assignment.documents[0].assignedVersion.doenetmlVersion.fullVersion;

return {
assignmentFound: true,
assignment,
docId,
docVersionId,
docVersionNum,
doenetML,
doenetmlVersion,
assignmentId,
userName,
};
}
Expand All @@ -91,7 +88,7 @@ export function AssignmentViewer() {
assignmentFound,
userName,
docId,
docVersionId,
docVersionNum,
doenetmlVersion,
} = useLoaderData();

Expand All @@ -115,9 +112,9 @@ export function AssignmentViewer() {
if (event.data.subject == "SPLICE.reportScoreAndState") {
// TODO: generalize to multiple documents. For now, assume just have one.
await axios.post("/api/saveScoreAndState", {
assignmentId: assignment.assignmentId,
docId: assignment.assignmentDocuments[0].docId,
docVersionId: assignment.assignmentDocuments[0].docVersionId,
activityId: assignment.id,
docId: assignment.documents[0].id,
docVersionNum: assignment.documents[0].assignedVersionNum,
score: event.data.score,
state: JSON.stringify(event.data.state),
onSubmission: event.data.state.onSubmission,
Expand All @@ -126,19 +123,19 @@ export function AssignmentViewer() {
const data = event.data.data;
if (data.verb === "submitted") {
recordSubmittedEvent({
assignmentId: assignment.assignmentId,
activityId: assignment.id,
docId,
docVersionId,
docVersionNum,
data,
});
}
} else if (event.data.subject == "SPLICE.getState") {
try {
let { data } = await axios.get("/api/loadState", {
params: {
assignmentId: assignment.assignmentId,
docId: assignment.assignmentDocuments[0].docId,
docVersionId: assignment.assignmentDocuments[0].docVersionId,
activityId: assignment.id,
docId: assignment.documents[0].id,
docVersionNum: assignment.documents[0].assignedVersionNum,
userId: event.data.userId,
},
});
Expand Down Expand Up @@ -328,9 +325,9 @@ export function AssignmentViewer() {
}

async function recordSubmittedEvent({
assignmentId,
activityId,
docId,
docVersionId,
docVersionNum,
data,
}) {
const object = JSON.parse(data.object);
Expand All @@ -349,9 +346,9 @@ async function recordSubmittedEvent({
const documentCreditAchieved = context.pageCreditAchieved;

await axios.post(`/api/recordSubmittedEvent`, {
assignmentId,
activityId,
docId,
docVersionId,
docVersionNum,
answerId,
answerNumber: object.answerNumber,
result: {
Expand Down
10 changes: 3 additions & 7 deletions server/src/model.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1498,8 +1498,6 @@ test("open and close assignment with code", async () => {
let assignmentData = await getAssignmentDataFromCode(classCode, true);
expect(assignmentData.assignmentFound).eq(true);
expect(assignmentData.assignment!.id).eq(activityId);
expect(assignmentData.assignment!.classCode).eq(classCode);
expect(assignmentData.assignment!.codeValidUntil).eqls(closeAt.toJSDate());
expect(assignmentData.assignment!.documents[0].assignedVersion!.source).eq(
"Some content",
);
Expand Down Expand Up @@ -1528,8 +1526,6 @@ test("open and close assignment with code", async () => {
assignmentData = await getAssignmentDataFromCode(classCode, true);
expect(assignmentData.assignmentFound).eq(true);
expect(assignmentData.assignment!.id).eq(activityId);
expect(assignmentData.assignment!.classCode).eq(classCode);
expect(assignmentData.assignment!.codeValidUntil).eqls(closeAt.toJSDate());

// Open with past date.
// Currently, says assignment is not found
Expand Down Expand Up @@ -1563,12 +1559,12 @@ test("open and unassign assignment with code", async () => {
closeAt,
ownerId,
);
const assignment = await getAssignment(activityId, ownerId);
expect(assignment.classCode).eq(classCode);
expect(assignment.codeValidUntil).eqls(closeAt.toJSDate());

let assignmentData = await getAssignmentDataFromCode(classCode, true);
expect(assignmentData.assignmentFound).eq(true);
expect(assignmentData.assignment!.id).eq(activityId);
expect(assignmentData.assignment!.classCode).eq(classCode);
expect(assignmentData.assignment!.codeValidUntil).eqls(closeAt.toJSDate());

// unassign activity
await unassignActivity(activityId, ownerId);
Expand Down
3 changes: 2 additions & 1 deletion server/src/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -869,7 +869,8 @@ export async function getAssignmentDataFromCode(
isAssigned: true,
isFolder: false,
},
include: {
select: {
id: true,
documents: {
select: {
id: true,
Expand Down

0 comments on commit c9daa88

Please sign in to comment.