got tests working without quiz id

This commit is contained in:
2023-10-10 14:17:02 -06:00
parent 274c3a177c
commit 9a06fd1cfd
7 changed files with 43 additions and 72 deletions

View File

@@ -94,7 +94,6 @@ public static class CoursePlannerExtensions
Assignments = module.Assignments
.Select((a) => a.validateAssignmentForCanvasId(canvasAssignments))
.ToArray(),
Quizzes = module.Quizzes.Select((s) => s.validateQuizForCanvasId(canvasQuizzes)).ToArray()
};
if (!moduleIdInCanvas)
@@ -124,20 +123,6 @@ public static class CoursePlannerExtensions
return assignment;
}
private static LocalQuiz validateQuizForCanvasId(
this LocalQuiz quiz,
IEnumerable<CanvasQuiz> canvasQuizzes
)
{
var assignmentIdInCanvas = canvasQuizzes.FirstOrDefault(cq => cq.Id == quiz.CanvasId) != null;
if (!assignmentIdInCanvas)
{
Console.WriteLine($"no id in canvas for quiz, removing old canvas id: {quiz.Name}");
return quiz with { CanvasId = null };
}
return quiz;
}
public static LocalAssignment validateSubmissionTypes(this LocalAssignment assignment)
{
var containsDiscussion =

View File

@@ -91,27 +91,38 @@ public class QuizEditorContext
logger.Log("cannot add quiz to canvas, no course stored in planner");
return;
}
var updatedQuiz = await planner.LocalCourse.AddQuizToCanvas(Quiz, canvas);
var canvasQuizId = await planner.LocalCourse.AddQuizToCanvas(Quiz, canvas);
var courseCanvasId = planner.LocalCourse.Settings.CanvasId;
if (courseCanvasId == null)
{
logger.Log("was able to add course to canvas, but errored while making module item. CourseCanvasId is null");
return;
}
var currentModule = getCurrentModule(Quiz, planner.LocalCourse);
if (currentModule.CanvasId == null)
{
logger.Log("was able to add course to canvas, but errored while making module item. module canvasId is null");
return;
}
await canvas.CreateModuleItem(
(ulong)courseCanvasId,
(ulong)currentModule.CanvasId,
updatedQuiz.Name,
"Quiz",
(ulong)updatedQuiz.CanvasId
);
(ulong)courseCanvasId,
(ulong)currentModule.CanvasId,
Quiz.Name,
"Quiz",
(ulong)canvasQuizId
);
await planner.LocalCourse.Modules.First().SortModuleItems(
(ulong)courseCanvasId,
(ulong)currentModule.CanvasId,
canvas
);
logger.Log("added quiz to canvas");
logger.Log($"finished adding quiz {Quiz.Name} to canvas");
}
private static LocalModule getCurrentModule(LocalQuiz newQuiz, LocalCourse course)

View File

@@ -137,26 +137,6 @@ public static partial class ModuleSyncronizationExtensions
}
}
foreach (var localQuiz in localModule.Quizzes.Where(q => q.DueAt > DateTime.Now))
{
var canvasModuleItemContentIds = canvasModulesItems[moduleCanvasId].Select(i => i.ContentId);
if (!canvasModuleItemContentIds.Contains(localQuiz.CanvasId))
{
var canvasAssignmentId =
localQuiz.CanvasId
?? throw new Exception("cannot create module item if quiz does not have canvas id");
await canvas.CreateModuleItem(
canvasId,
moduleCanvasId,
localQuiz.Name,
"Quiz",
canvasAssignmentId
);
anyUpdated = true;
}
}
return anyUpdated;
}

View File

@@ -11,10 +11,10 @@ public static partial class QuizSyncronizationExtensions
{
public static bool QuizIsCreated(this LocalQuiz localQuiz, IEnumerable<CanvasQuiz> canvasQuizzes)
{
return canvasQuizzes.Any(q => q.Id == localQuiz.CanvasId);
return canvasQuizzes.Any(q => q.Title == localQuiz.Name);
}
public static async Task<LocalQuiz> AddQuizToCanvas(
public static async Task<ulong?> AddQuizToCanvas(
this LocalCourse localCourse,
LocalQuiz localQuiz,
CanvasService canvas
@@ -23,13 +23,13 @@ public static partial class QuizSyncronizationExtensions
if (localCourse.Settings.CanvasId == null)
{
Console.WriteLine("Cannot add quiz to canvas without canvas course id");
return localQuiz;
return null;
}
ulong courseCanvasId = (ulong)localCourse.Settings.CanvasId;
var canvasAssignmentGroupId = localQuiz.GetCanvasAssignmentGroupId(localCourse.Settings.AssignmentGroups);
var canvasQuizId = await canvas.Quizzes.Create(courseCanvasId, localQuiz, canvasAssignmentGroupId);
return localQuiz with { CanvasId = canvasQuizId };
return canvasQuizId;
}
}