course difference deletions

This commit is contained in:
2024-08-24 14:43:11 -06:00
parent d32dd4e3db
commit 8d28346431
18 changed files with 766 additions and 58 deletions

View File

@@ -0,0 +1,159 @@
import { describe, it, expect } from "vitest";
import { LocalAssignment } from "../assignmnet/localAssignment";
import { AssignmentSubmissionType } from "../assignmnet/assignmentSubmissionType";
import { assignmentMarkdownSerializer } from "../assignmnet/utils/assignmentMarkdownSerializer";
import { assignmentMarkdownParser } from "../assignmnet/utils/assignmentMarkdownParser";
describe("AssignmentMarkdownTests", () => {
it("can parse assignment settings", () => {
const assignment: LocalAssignment = {
name: "test assignment",
description: "here is the description",
dueAt: "21/08/2023 23:59:00",
lockAt: "21/08/2023 23:59:00",
submissionTypes: [AssignmentSubmissionType.ONLINE_UPLOAD],
localAssignmentGroupName: "Final Project",
rubric: [
{ points: 4, label: "do task 1" },
{ points: 2, label: "do task 2" },
],
allowedFileUploadExtensions: [],
};
const assignmentMarkdown =
assignmentMarkdownSerializer.toMarkdown(assignment);
const parsedAssignment =
assignmentMarkdownParser.parseMarkdown(assignmentMarkdown);
expect(parsedAssignment).toEqual(assignment);
});
it("assignment with empty rubric can be parsed", () => {
const assignment: LocalAssignment = {
name: "test assignment",
description: "here is the description",
dueAt: "21/08/2023 23:59:00",
lockAt: "21/08/2023 23:59:00",
submissionTypes: [AssignmentSubmissionType.ONLINE_UPLOAD],
localAssignmentGroupName: "Final Project",
rubric: [],
allowedFileUploadExtensions: [],
};
const assignmentMarkdown =
assignmentMarkdownSerializer.toMarkdown(assignment);
const parsedAssignment =
assignmentMarkdownParser.parseMarkdown(assignmentMarkdown);
expect(parsedAssignment).toEqual(assignment);
});
it("assignment with empty submission types can be parsed", () => {
const assignment: LocalAssignment = {
name: "test assignment",
description: "here is the description",
dueAt: "21/08/2023 23:59:00",
lockAt: "21/08/2023 23:59:00",
submissionTypes: [],
localAssignmentGroupName: "Final Project",
rubric: [
{ points: 4, label: "do task 1" },
{ points: 2, label: "do task 2" },
],
allowedFileUploadExtensions: [],
};
const assignmentMarkdown =
assignmentMarkdownSerializer.toMarkdown(assignment);
const parsedAssignment =
assignmentMarkdownParser.parseMarkdown(assignmentMarkdown);
expect(parsedAssignment).toEqual(assignment);
});
it("assignment without lockAt date can be parsed", () => {
const assignment: LocalAssignment = {
name: "test assignment",
description: "here is the description",
dueAt: "21/08/2023 23:59:00",
lockAt: undefined,
submissionTypes: [],
localAssignmentGroupName: "Final Project",
rubric: [
{ points: 4, label: "do task 1" },
{ points: 2, label: "do task 2" },
],
allowedFileUploadExtensions: [],
};
const assignmentMarkdown =
assignmentMarkdownSerializer.toMarkdown(assignment);
const parsedAssignment =
assignmentMarkdownParser.parseMarkdown(assignmentMarkdown);
expect(parsedAssignment).toEqual(assignment);
});
it("assignment without description can be parsed", () => {
const assignment: LocalAssignment = {
name: "test assignment",
description: "",
dueAt: "21/08/2023 23:59:00",
lockAt: "21/08/2023 23:59:00",
submissionTypes: [],
localAssignmentGroupName: "Final Project",
rubric: [
{ points: 4, label: "do task 1" },
{ points: 2, label: "do task 2" },
],
allowedFileUploadExtensions: [],
};
const assignmentMarkdown =
assignmentMarkdownSerializer.toMarkdown(assignment);
const parsedAssignment =
assignmentMarkdownParser.parseMarkdown(assignmentMarkdown);
expect(parsedAssignment).toEqual(assignment);
});
it("assignments can have three dashes", () => {
const assignment: LocalAssignment = {
name: "test assignment",
description: "test assignment\n---\nsomestuff",
dueAt: "21/08/2023 23:59:00",
lockAt: "21/08/2023 23:59:00",
submissionTypes: [],
localAssignmentGroupName: "Final Project",
rubric: [],
allowedFileUploadExtensions: [],
};
const assignmentMarkdown =
assignmentMarkdownSerializer.toMarkdown(assignment);
const parsedAssignment =
assignmentMarkdownParser.parseMarkdown(assignmentMarkdown);
expect(parsedAssignment).toEqual(assignment);
});
it("assignments can restrict upload types", () => {
const assignment: LocalAssignment = {
name: "test assignment",
description: "here is the description",
dueAt: "21/08/2023 23:59:00",
lockAt: "21/08/2023 23:59:00",
submissionTypes: [AssignmentSubmissionType.ONLINE_UPLOAD],
allowedFileUploadExtensions: ["pdf", "txt"],
localAssignmentGroupName: "Final Project",
rubric: [],
};
const assignmentMarkdown =
assignmentMarkdownSerializer.toMarkdown(assignment);
const parsedAssignment =
assignmentMarkdownParser.parseMarkdown(assignmentMarkdown);
expect(parsedAssignment).toEqual(assignment);
});
});