mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
more file system tests
This commit is contained in:
579
nextjs/src/services/tests/courseDifferenceChanges.test.ts
Normal file
579
nextjs/src/services/tests/courseDifferenceChanges.test.ts
Normal file
@@ -0,0 +1,579 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { LocalCourse } from "@/models/local/localCourse";
|
||||
import { CourseDifferences } from "../fileStorage/courseDifferences";
|
||||
import { AssignmentSubmissionType } from "@/models/local/assignmnet/assignmentSubmissionType";
|
||||
|
||||
describe("CourseDifferencesChangesTests", () => {
|
||||
it("can detect new settings", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
endDate: "09/07/2024 23:59:00",
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
settings: {
|
||||
...oldCourse.settings,
|
||||
name: "new course name",
|
||||
},
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(0);
|
||||
expect(differences.settings).not.toBeNull();
|
||||
expect(differences.settings?.name).toBe("new course name");
|
||||
});
|
||||
|
||||
it("can detect new module", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
endDate: "09/07/2024 23:59:00",
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).not.toBeNull();
|
||||
expect(differences.modules).toHaveLength(1);
|
||||
expect(differences.modules?.[0].name).toBe("new module");
|
||||
});
|
||||
|
||||
it("can detect changed assignment", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
endDate: "09/07/2024 23:59:00",
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [
|
||||
{
|
||||
name: "test assignment",
|
||||
description: "",
|
||||
dueAt: "09/07/2024 23:59:00",
|
||||
submissionTypes: [],
|
||||
allowedFileUploadExtensions: [],
|
||||
rubric: [],
|
||||
},
|
||||
],
|
||||
quizzes: [],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [
|
||||
{
|
||||
name: "test assignment",
|
||||
description: "new description",
|
||||
dueAt: "09/07/2024 23:59:00",
|
||||
submissionTypes: [],
|
||||
allowedFileUploadExtensions: [],
|
||||
rubric: [],
|
||||
},
|
||||
],
|
||||
quizzes: [],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).not.toBeNull();
|
||||
expect(differences.modules).toHaveLength(1);
|
||||
expect(differences.modules?.[0].assignments?.[0].description).toBe("new description");
|
||||
});
|
||||
|
||||
it("can properly ignore unchanged modules", () => {
|
||||
const commonDate = "09/07/2024 23:59:00";
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: commonDate,
|
||||
endDate: commonDate,
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [
|
||||
{
|
||||
name: "test assignment",
|
||||
description: "",
|
||||
dueAt: commonDate,
|
||||
submissionTypes: [],
|
||||
allowedFileUploadExtensions: [],
|
||||
rubric: [],
|
||||
},
|
||||
],
|
||||
quizzes: [],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("only changed assignment represented", () => {
|
||||
const commonDate = "09/07/2024 23:59:00";
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: commonDate,
|
||||
endDate: commonDate,
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [
|
||||
{
|
||||
name: "test assignment",
|
||||
description: "",
|
||||
dueAt: commonDate,
|
||||
submissionTypes: [AssignmentSubmissionType.ONLINE_UPLOAD],
|
||||
allowedFileUploadExtensions: [],
|
||||
rubric: [{ points: 1, label: "rubric" }],
|
||||
},
|
||||
{
|
||||
name: "test assignment 2",
|
||||
description: "",
|
||||
dueAt: commonDate,
|
||||
submissionTypes: [],
|
||||
allowedFileUploadExtensions: [],
|
||||
rubric: [],
|
||||
},
|
||||
],
|
||||
quizzes: [],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [
|
||||
{
|
||||
name: "test assignment",
|
||||
description: "",
|
||||
dueAt: commonDate,
|
||||
submissionTypes: [AssignmentSubmissionType.ONLINE_UPLOAD],
|
||||
allowedFileUploadExtensions: [],
|
||||
rubric: [{ points: 1, label: "rubric" }],
|
||||
},
|
||||
{
|
||||
name: "test assignment 2 with a new name",
|
||||
description: "",
|
||||
dueAt: commonDate,
|
||||
submissionTypes: [],
|
||||
allowedFileUploadExtensions: [],
|
||||
rubric: [],
|
||||
},
|
||||
],
|
||||
quizzes: [],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(1);
|
||||
expect(differences.modules?.[0].assignments).toHaveLength(1);
|
||||
expect(differences.modules?.[0].assignments?.[0].name).toBe("test assignment 2 with a new name");
|
||||
});
|
||||
|
||||
it("identical quizzes ignored", () => {
|
||||
const commonDate = "09/07/2024 23:59:00";
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: commonDate,
|
||||
endDate: commonDate,
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [
|
||||
{
|
||||
name: "Test Quiz",
|
||||
description: "this is my description",
|
||||
dueAt: commonDate,
|
||||
shuffleAnswers: true,
|
||||
showCorrectAnswers: false,
|
||||
oneQuestionAtATime: false,
|
||||
allowedAttempts: -1,
|
||||
questions: [],
|
||||
},
|
||||
],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("can detect different quiz", () => {
|
||||
const commonDate = "09/07/2024 23:59:00";
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: commonDate,
|
||||
endDate: commonDate,
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [
|
||||
{
|
||||
name: "Test Quiz",
|
||||
description: "this is my description",
|
||||
dueAt: commonDate,
|
||||
shuffleAnswers: true,
|
||||
showCorrectAnswers: false,
|
||||
oneQuestionAtATime: false,
|
||||
allowedAttempts: -1,
|
||||
questions: [],
|
||||
},
|
||||
],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [
|
||||
{
|
||||
name: "Test Quiz",
|
||||
description: "this is my description",
|
||||
dueAt: commonDate,
|
||||
shuffleAnswers: true,
|
||||
showCorrectAnswers: false,
|
||||
oneQuestionAtATime: false,
|
||||
allowedAttempts: -1,
|
||||
questions: [],
|
||||
lockAt: "12/31/9999 23:59:59",
|
||||
},
|
||||
],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(1);
|
||||
expect(differences.modules?.[0].quizzes).toHaveLength(1);
|
||||
expect(differences.modules?.[0].quizzes?.[0].lockAt).toBe("12/31/9999 23:59:59");
|
||||
});
|
||||
|
||||
it("can detect only different quiz when other quizzes stay", () => {
|
||||
const commonDate = "09/07/2024 23:59:00";
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: commonDate,
|
||||
endDate: commonDate,
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [
|
||||
{
|
||||
name: "Test Quiz",
|
||||
description: "this is my description",
|
||||
dueAt: commonDate,
|
||||
shuffleAnswers: true,
|
||||
showCorrectAnswers: false,
|
||||
oneQuestionAtATime: false,
|
||||
allowedAttempts: -1,
|
||||
questions: [],
|
||||
},
|
||||
],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [
|
||||
{
|
||||
name: "Test Quiz",
|
||||
description: "this is my description",
|
||||
dueAt: commonDate,
|
||||
shuffleAnswers: true,
|
||||
showCorrectAnswers: false,
|
||||
oneQuestionAtATime: false,
|
||||
allowedAttempts: -1,
|
||||
questions: [],
|
||||
},
|
||||
{
|
||||
name: "Test Quiz 2",
|
||||
description: "this is my description",
|
||||
dueAt: commonDate,
|
||||
shuffleAnswers: true,
|
||||
showCorrectAnswers: false,
|
||||
oneQuestionAtATime: false,
|
||||
allowedAttempts: -1,
|
||||
questions: [],
|
||||
},
|
||||
],
|
||||
pages: [],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(1);
|
||||
expect(differences.modules?.[0].quizzes).toHaveLength(1);
|
||||
expect(differences.modules?.[0].quizzes?.[0].name).toBe("Test Quiz 2");
|
||||
});
|
||||
|
||||
it("same pages not detected", () => {
|
||||
const commonDate = "09/07/2024 23:59:00";
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: commonDate,
|
||||
endDate: commonDate,
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [],
|
||||
pages: [
|
||||
{
|
||||
name: "test page",
|
||||
text: "test description",
|
||||
dueAt: commonDate,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("different page detected", () => {
|
||||
const commonDate = "09/07/2024 23:59:00";
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: commonDate,
|
||||
endDate: commonDate,
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [],
|
||||
pages: [
|
||||
{
|
||||
name: "test page",
|
||||
text: "test description",
|
||||
dueAt: commonDate,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [],
|
||||
pages: [
|
||||
{
|
||||
name: "test page",
|
||||
text: "test description changed",
|
||||
dueAt: commonDate,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(1);
|
||||
expect(differences.modules?.[0].pages).toHaveLength(1);
|
||||
expect(differences.modules?.[0].pages?.[0].text).toBe("test description changed");
|
||||
});
|
||||
|
||||
it("different page detected but not same page", () => {
|
||||
const commonDate = "09/07/2024 23:59:00";
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "Test Course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: commonDate,
|
||||
endDate: commonDate,
|
||||
defaultDueTime: {
|
||||
hour: 23,
|
||||
minute: 59,
|
||||
},
|
||||
},
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [],
|
||||
pages: [
|
||||
{
|
||||
name: "test page",
|
||||
text: "test description",
|
||||
dueAt: commonDate,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
const newCourse: LocalCourse = {
|
||||
...oldCourse,
|
||||
modules: [
|
||||
{
|
||||
name: "new module",
|
||||
assignments: [],
|
||||
quizzes: [],
|
||||
pages: [
|
||||
{
|
||||
name: "test page",
|
||||
text: "test description",
|
||||
dueAt: commonDate,
|
||||
},
|
||||
{
|
||||
name: "test page 2",
|
||||
text: "test description",
|
||||
dueAt: commonDate,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const differences = CourseDifferences.getNewChanges(newCourse, oldCourse);
|
||||
|
||||
expect(differences.modules).toHaveLength(1);
|
||||
expect(differences.modules?.[0].pages).toHaveLength(1);
|
||||
expect(differences.modules?.[0].pages?.[0].name).toBe("test page 2");
|
||||
});
|
||||
});
|
||||
@@ -6,6 +6,7 @@ describe("CourseDifferencesDeletionsTests", () => {
|
||||
it("same module does not get deleted", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "test course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
@@ -44,6 +45,7 @@ describe("CourseDifferencesDeletionsTests", () => {
|
||||
it("changed module - old one gets deleted", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "test course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
@@ -83,6 +85,7 @@ describe("CourseDifferencesDeletionsTests", () => {
|
||||
it("new assignment name gets deleted", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "test course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
@@ -144,6 +147,7 @@ describe("CourseDifferencesDeletionsTests", () => {
|
||||
it("assignments with changed descriptions do not get deleted", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "test course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
@@ -200,6 +204,7 @@ describe("CourseDifferencesDeletionsTests", () => {
|
||||
it("can detect changed and unchanged assignments", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "test course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
@@ -276,6 +281,7 @@ describe("CourseDifferencesDeletionsTests", () => {
|
||||
it("changed quizzes get deleted", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "test course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
@@ -360,6 +366,7 @@ describe("CourseDifferencesDeletionsTests", () => {
|
||||
it("changed pages get deleted", () => {
|
||||
const oldCourse: LocalCourse = {
|
||||
settings: {
|
||||
name: "test course",
|
||||
assignmentGroups: [],
|
||||
daysOfWeek: [],
|
||||
startDate: "09/07/2024 23:59:00",
|
||||
|
||||
Reference in New Issue
Block a user