mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
added new file change checker
This commit is contained in:
515
Management.Test/Markdown/CouresDifferencesChangesTests.cs
Normal file
515
Management.Test/Markdown/CouresDifferencesChangesTests.cs
Normal file
@@ -0,0 +1,515 @@
|
|||||||
|
|
||||||
|
|
||||||
|
using LocalModels;
|
||||||
|
|
||||||
|
public class CouresDifferencesChangesTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void CanDetectNewSettings()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = []
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "new course name" },
|
||||||
|
Modules = []
|
||||||
|
};
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.Modules.Should().BeEmpty();
|
||||||
|
differences.Settings.Should().NotBeNull();
|
||||||
|
differences.Settings?.Name.Should().Be("new course name");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CanDetectNewModule()
|
||||||
|
{
|
||||||
|
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = []
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "new module",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.Modules.Should().NotBeNull();
|
||||||
|
differences.Modules?.Count().Should().Be(1);
|
||||||
|
differences.Modules?.First().Name.Should().Be("new module");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CanDetectChangedAssignment()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "",
|
||||||
|
DueAt = new DateTime(),
|
||||||
|
SubmissionTypes = [],
|
||||||
|
Rubric = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "new description",
|
||||||
|
DueAt = new DateTime(),
|
||||||
|
SubmissionTypes = [],
|
||||||
|
Rubric = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.Modules.Should().NotBeNull();
|
||||||
|
differences.Modules?.Count().Should().Be(1);
|
||||||
|
differences.Modules?.First().Assignments.First().Description.Should().Be("new description");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CanProperlyIgnoreUnchangedModules()
|
||||||
|
{
|
||||||
|
var commonDate = new DateTime();
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new()
|
||||||
|
{
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "",
|
||||||
|
DueAt = commonDate,
|
||||||
|
SubmissionTypes = [],
|
||||||
|
Rubric = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new()
|
||||||
|
{
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "",
|
||||||
|
DueAt = commonDate,
|
||||||
|
SubmissionTypes = [],
|
||||||
|
Rubric = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.Modules.Should().BeEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void OnlyChangedAssignmentRepresented()
|
||||||
|
{
|
||||||
|
var commonDate = new DateTime();
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new()
|
||||||
|
{
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "",
|
||||||
|
DueAt = commonDate,
|
||||||
|
SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD],
|
||||||
|
Rubric = [ new() {Points = 1, Label = "rubric"} ],
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment 2",
|
||||||
|
Description = "",
|
||||||
|
DueAt = commonDate,
|
||||||
|
SubmissionTypes = [],
|
||||||
|
Rubric = [],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "",
|
||||||
|
DueAt = commonDate,
|
||||||
|
SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD],
|
||||||
|
Rubric = [ new() {Points = 1, Label = "rubric"} ],
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment 2 with a new name",
|
||||||
|
Description = "",
|
||||||
|
DueAt = commonDate,
|
||||||
|
SubmissionTypes = [],
|
||||||
|
Rubric = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.Modules.First().Assignments.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Assignments.First().Name.Should().Be("test assignment 2 with a new name");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void IdenticalQuizzesIgnored()
|
||||||
|
{
|
||||||
|
var commonDate = new DateTime();
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [],
|
||||||
|
Quizzes = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz",
|
||||||
|
Description = @"this is my description ",
|
||||||
|
LockAt = commonDate,
|
||||||
|
DueAt = commonDate,
|
||||||
|
ShuffleAnswers = true,
|
||||||
|
OneQuestionAtATime = false,
|
||||||
|
LocalAssignmentGroupName = "someId",
|
||||||
|
AllowedAttempts = -1,
|
||||||
|
Questions = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [],
|
||||||
|
Quizzes = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz",
|
||||||
|
Description = @"this is my description ",
|
||||||
|
LockAt = commonDate,
|
||||||
|
DueAt = commonDate,
|
||||||
|
ShuffleAnswers = true,
|
||||||
|
OneQuestionAtATime = false,
|
||||||
|
LocalAssignmentGroupName = "someId",
|
||||||
|
AllowedAttempts = -1,
|
||||||
|
Questions = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
differences.Modules.Count().Should().Be(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CanDetectDifferentQuiz()
|
||||||
|
{
|
||||||
|
var commonDate = new DateTime();
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [],
|
||||||
|
Quizzes = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz",
|
||||||
|
Description = @"this is my description ",
|
||||||
|
LockAt = commonDate,
|
||||||
|
DueAt = commonDate,
|
||||||
|
ShuffleAnswers = true,
|
||||||
|
OneQuestionAtATime = false,
|
||||||
|
LocalAssignmentGroupName = "someId",
|
||||||
|
AllowedAttempts = -1,
|
||||||
|
Questions = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [],
|
||||||
|
Quizzes = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz",
|
||||||
|
Description = @"this is my description ",
|
||||||
|
LockAt = DateTime.MaxValue,
|
||||||
|
DueAt = commonDate,
|
||||||
|
ShuffleAnswers = true,
|
||||||
|
OneQuestionAtATime = false,
|
||||||
|
LocalAssignmentGroupName = "someId",
|
||||||
|
AllowedAttempts = -1,
|
||||||
|
Questions = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
differences.Modules.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Quizzes.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Quizzes.First().LockAt.Should().Be(DateTime.MaxValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CanDetectOnlyDifferentQuiz_WhenOtherQuizzesStay()
|
||||||
|
{
|
||||||
|
var commonDate = new DateTime();
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [],
|
||||||
|
Quizzes = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz",
|
||||||
|
Description = @"this is my description ",
|
||||||
|
LockAt = commonDate,
|
||||||
|
DueAt = commonDate,
|
||||||
|
ShuffleAnswers = true,
|
||||||
|
OneQuestionAtATime = false,
|
||||||
|
LocalAssignmentGroupName = "someId",
|
||||||
|
AllowedAttempts = -1,
|
||||||
|
Questions = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Assignments = [],
|
||||||
|
Quizzes = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz",
|
||||||
|
Description = @"this is my description ",
|
||||||
|
LockAt = commonDate,
|
||||||
|
DueAt = commonDate,
|
||||||
|
ShuffleAnswers = true,
|
||||||
|
OneQuestionAtATime = false,
|
||||||
|
LocalAssignmentGroupName = "someId",
|
||||||
|
AllowedAttempts = -1,
|
||||||
|
Questions = []
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz 2",
|
||||||
|
Description = @"this is my description ",
|
||||||
|
LockAt = commonDate,
|
||||||
|
DueAt = commonDate,
|
||||||
|
ShuffleAnswers = true,
|
||||||
|
OneQuestionAtATime = false,
|
||||||
|
LocalAssignmentGroupName = "someId",
|
||||||
|
AllowedAttempts = -1,
|
||||||
|
Questions = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
differences.Modules.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Quizzes.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Quizzes.First().Name.Should().Be("Test Quiz 2");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void SamePagesNotDetected()
|
||||||
|
{
|
||||||
|
|
||||||
|
var commonDate = new DateTime();
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Pages = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name= "test page",
|
||||||
|
Text = "test description",
|
||||||
|
DueAt = commonDate
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new(){
|
||||||
|
Name = "new module",
|
||||||
|
Pages = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name= "test page",
|
||||||
|
Text = "test description",
|
||||||
|
DueAt = commonDate
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
differences.Modules.Count().Should().Be(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void DifferentPageDetected()
|
||||||
|
{
|
||||||
|
|
||||||
|
var commonDate = new DateTime();
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Pages = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name= "test page",
|
||||||
|
Text = "test description",
|
||||||
|
DueAt = commonDate
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new(){
|
||||||
|
Name = "new module",
|
||||||
|
Pages = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name= "test page",
|
||||||
|
Text = "test description changed",
|
||||||
|
DueAt = commonDate
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
differences.Modules.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Pages.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Pages.First().Text.Should().Be("test description changed");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void DifferentPageDetected_ButNotSamePage()
|
||||||
|
{
|
||||||
|
|
||||||
|
var commonDate = new DateTime();
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { Name = "Test Course" },
|
||||||
|
Modules = [new(){
|
||||||
|
Name = "new module",
|
||||||
|
Pages = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name= "test page",
|
||||||
|
Text = "test description",
|
||||||
|
DueAt = commonDate
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new(){
|
||||||
|
Name = "new module",
|
||||||
|
Pages = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name= "test page",
|
||||||
|
Text = "test description",
|
||||||
|
DueAt = commonDate
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name= "test page 2",
|
||||||
|
Text = "test description",
|
||||||
|
DueAt = commonDate
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
||||||
|
differences.Modules.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Pages.Count().Should().Be(1);
|
||||||
|
differences.Modules.First().Pages.First().Name.Should().Be("test page 2");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,208 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
using LocalModels;
|
|
||||||
|
|
||||||
public class CoursesDifferencesTests
|
|
||||||
{
|
|
||||||
[Fact]
|
|
||||||
public void CanDetectNewSettings()
|
|
||||||
{
|
|
||||||
LocalCourse oldCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "Test Course" },
|
|
||||||
Modules = []
|
|
||||||
};
|
|
||||||
LocalCourse newCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "new course name" },
|
|
||||||
Modules = []
|
|
||||||
};
|
|
||||||
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
|
||||||
|
|
||||||
differences.Modules.Should().BeEmpty();
|
|
||||||
differences.Settings.Should().NotBeNull();
|
|
||||||
differences.Settings?.Name.Should().Be("new course name");
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void CanDetectNewModule()
|
|
||||||
{
|
|
||||||
|
|
||||||
LocalCourse oldCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "Test Course" },
|
|
||||||
Modules = []
|
|
||||||
};
|
|
||||||
LocalCourse newCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "Test Course" },
|
|
||||||
Modules = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "new module",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
|
||||||
|
|
||||||
differences.Modules.Should().NotBeNull();
|
|
||||||
differences.Modules?.Count().Should().Be(1);
|
|
||||||
differences.Modules?.First().Name.Should().Be("new module");
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void CanDetectChangedAssignment()
|
|
||||||
{
|
|
||||||
LocalCourse oldCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "Test Course" },
|
|
||||||
Modules = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "new module",
|
|
||||||
Assignments = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "test assignment",
|
|
||||||
Description = "",
|
|
||||||
DueAt = new DateTime(),
|
|
||||||
SubmissionTypes = [],
|
|
||||||
Rubric = []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}]
|
|
||||||
};
|
|
||||||
LocalCourse newCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "Test Course" },
|
|
||||||
Modules = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "new module",
|
|
||||||
Assignments = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "test assignment",
|
|
||||||
Description = "new description",
|
|
||||||
DueAt = new DateTime(),
|
|
||||||
SubmissionTypes = [],
|
|
||||||
Rubric = []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
|
||||||
|
|
||||||
differences.Modules.Should().NotBeNull();
|
|
||||||
differences.Modules?.Count().Should().Be(1);
|
|
||||||
differences.Modules?.First().Assignments.First().Description.Should().Be("new description");
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void CanProperlyIgnoreUnchangedModules()
|
|
||||||
{
|
|
||||||
var commonDate = new DateTime();
|
|
||||||
LocalCourse oldCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "Test Course" },
|
|
||||||
Modules = [new()
|
|
||||||
{
|
|
||||||
Name = "new module",
|
|
||||||
Assignments = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "test assignment",
|
|
||||||
Description = "",
|
|
||||||
DueAt = commonDate,
|
|
||||||
SubmissionTypes = [],
|
|
||||||
Rubric = []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}]
|
|
||||||
};
|
|
||||||
LocalCourse newCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "Test Course" },
|
|
||||||
Modules = [new()
|
|
||||||
{
|
|
||||||
Name = "new module",
|
|
||||||
Assignments = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "test assignment",
|
|
||||||
Description = "",
|
|
||||||
DueAt = commonDate,
|
|
||||||
SubmissionTypes = [],
|
|
||||||
Rubric = []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}]
|
|
||||||
};
|
|
||||||
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
|
||||||
|
|
||||||
differences.Modules.Should().BeEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void OnlyChangedAssignmentRepresented()
|
|
||||||
{
|
|
||||||
var commonDate = new DateTime();
|
|
||||||
LocalCourse oldCourse = new()
|
|
||||||
{
|
|
||||||
Settings = new() { Name = "Test Course" },
|
|
||||||
Modules = [new()
|
|
||||||
{
|
|
||||||
Name = "new module",
|
|
||||||
Assignments = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "test assignment",
|
|
||||||
Description = "",
|
|
||||||
DueAt = commonDate,
|
|
||||||
SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD],
|
|
||||||
Rubric = [ new() {Points = 1, Label = "rubric"} ],
|
|
||||||
},
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "test assignment 2",
|
|
||||||
Description = "",
|
|
||||||
DueAt = commonDate,
|
|
||||||
SubmissionTypes = [],
|
|
||||||
Rubric = [],
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}]
|
|
||||||
};
|
|
||||||
LocalCourse newCourse = oldCourse with {
|
|
||||||
Modules = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "new module",
|
|
||||||
Assignments = [
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "test assignment",
|
|
||||||
Description = "",
|
|
||||||
DueAt = commonDate,
|
|
||||||
SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD],
|
|
||||||
Rubric = [ new() {Points = 1, Label = "rubric"} ],
|
|
||||||
},
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "test assignment 2 with a new name",
|
|
||||||
Description = "",
|
|
||||||
DueAt = commonDate,
|
|
||||||
SubmissionTypes = [],
|
|
||||||
Rubric = []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
var differences = CourseDifferences.GetNewChanges(newCourse, oldCourse);
|
|
||||||
|
|
||||||
differences.Modules.First().Assignments.Count().Should().Be(1);
|
|
||||||
differences.Modules.First().Assignments.First().Name.Should().Be("test assignment 2 with a new name");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
297
Management.Test/Markdown/CourseDifferencesDeletionsTests.cs
Normal file
297
Management.Test/Markdown/CourseDifferencesDeletionsTests.cs
Normal file
@@ -0,0 +1,297 @@
|
|||||||
|
using LocalModels;
|
||||||
|
|
||||||
|
public class CourseDifferencesDeletionsTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void SameModuleDoesNotGetDeleted()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module"
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module"
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetDeletedChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.NamesOfModulesToDeleteCompletely.Should().BeEmpty();
|
||||||
|
}
|
||||||
|
[Fact]
|
||||||
|
public void ChangedModule_OldOneGetsDeleted()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module 2"
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetDeletedChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.NamesOfModulesToDeleteCompletely.Count().Should().Be(1);
|
||||||
|
differences.NamesOfModulesToDeleteCompletely.First().Should().Be("test module");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void newAssignmentNameGetsDeleted()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment changed name"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetDeletedChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.NamesOfModulesToDeleteCompletely.Should().BeEmpty();
|
||||||
|
differences.DeleteContentsOfModule.Count().Should().Be(1);
|
||||||
|
differences.DeleteContentsOfModule.First().Assignments.Count().Should().Be(1);
|
||||||
|
differences.DeleteContentsOfModule.First().Assignments.First().Name.Should().Be("test assignment");
|
||||||
|
}
|
||||||
|
[Fact]
|
||||||
|
public void AssignmentsWithChangedDescriptionsDoNotGetDeleted()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "test description",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "test description",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetDeletedChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.DeleteContentsOfModule.Should().BeEmpty();
|
||||||
|
}
|
||||||
|
[Fact]
|
||||||
|
public void CanDetectChangedAndUnchangedAssignments()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "test description",
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment 2",
|
||||||
|
Description = "test description",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Assignments = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment",
|
||||||
|
Description = "test description",
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test assignment 2 changed",
|
||||||
|
Description = "test description",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetDeletedChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.DeleteContentsOfModule.Count().Should().Be(1);
|
||||||
|
differences.DeleteContentsOfModule.First().Assignments.Count().Should().Be(1);
|
||||||
|
differences.DeleteContentsOfModule.First().Assignments.First().Name.Should().Be("test assignment 2");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ChangedQuizzesGetDeleted()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Quizzes = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz",
|
||||||
|
Description = "test description"
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz 2",
|
||||||
|
Description = "test description"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Quizzes = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz",
|
||||||
|
Description = "test description"
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Quiz 3",
|
||||||
|
Description = "test description"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetDeletedChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.DeleteContentsOfModule.Count().Should().Be(1);
|
||||||
|
differences.DeleteContentsOfModule.First().Quizzes.Count().Should().Be(1);
|
||||||
|
differences.DeleteContentsOfModule.First().Quizzes.First().Name.Should().Be("Test Quiz 2");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ChangedPagesGetDeleted()
|
||||||
|
{
|
||||||
|
LocalCourse oldCourse = new()
|
||||||
|
{
|
||||||
|
Settings = new() { },
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Pages = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Page",
|
||||||
|
Text = "test contents"
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Page 2",
|
||||||
|
Text = "test contents"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
LocalCourse newCourse = oldCourse with
|
||||||
|
{
|
||||||
|
Modules = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "test module",
|
||||||
|
Pages = [
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Page",
|
||||||
|
Text = "test contents"
|
||||||
|
},
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Name = "Test Page 3",
|
||||||
|
Text = "test contents"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var differences = CourseDifferences.GetDeletedChanges(newCourse, oldCourse);
|
||||||
|
|
||||||
|
differences.DeleteContentsOfModule.Count().Should().Be(1);
|
||||||
|
differences.DeleteContentsOfModule.First().Pages.Count().Should().Be(1);
|
||||||
|
differences.DeleteContentsOfModule.First().Pages.First().Name.Should().Be("Test Page 2");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,53 @@ using LocalModels;
|
|||||||
|
|
||||||
public static class CourseDifferences
|
public static class CourseDifferences
|
||||||
{
|
{
|
||||||
|
public static DeleteCourseChanges GetDeletedChanges(LocalCourse newCourse, LocalCourse oldCourse)
|
||||||
|
{
|
||||||
|
if (newCourse == oldCourse)
|
||||||
|
return new DeleteCourseChanges();
|
||||||
|
var moduleNamesNoLongerReferenced = oldCourse.Modules
|
||||||
|
.Where(oldModule =>
|
||||||
|
!newCourse.Modules.Any(newModule => newModule.Name == oldModule.Name)
|
||||||
|
)
|
||||||
|
.Select(oldModule => oldModule.Name)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
var modulesWithDeletions = oldCourse.Modules
|
||||||
|
.Where(oldModule =>
|
||||||
|
!newCourse.Modules.Any(newModule => newModule.Equals(oldModule))
|
||||||
|
)
|
||||||
|
.Select(oldModule =>
|
||||||
|
{
|
||||||
|
var newModule = newCourse.Modules.FirstOrDefault(m => m.Name == oldModule.Name);
|
||||||
|
if (newModule == null)
|
||||||
|
return oldModule;
|
||||||
|
|
||||||
|
var unreferencedAssignments = oldModule.Assignments.Where(oldAssignment =>
|
||||||
|
!newModule.Assignments.Any(newAssignment => newAssignment.Name == oldAssignment.Name)
|
||||||
|
);
|
||||||
|
var unreferencedQuizzes = oldModule.Quizzes.Where(oldQuiz =>
|
||||||
|
!newModule.Quizzes.Any(newQuiz => newQuiz.Name == oldQuiz.Name)
|
||||||
|
);
|
||||||
|
var unreferencedPages = oldModule.Pages.Where(oldPage =>
|
||||||
|
!newModule.Pages.Any(newPage => newPage.Name == oldPage.Name)
|
||||||
|
);
|
||||||
|
|
||||||
|
return oldModule with
|
||||||
|
{
|
||||||
|
Assignments = unreferencedAssignments,
|
||||||
|
Quizzes = unreferencedQuizzes,
|
||||||
|
Pages = unreferencedPages,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
return new DeleteCourseChanges
|
||||||
|
{
|
||||||
|
NamesOfModulesToDeleteCompletely = moduleNamesNoLongerReferenced,
|
||||||
|
DeleteContentsOfModule = modulesWithDeletions,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public static NewCourseChanges GetNewChanges(LocalCourse newCourse, LocalCourse oldCourse)
|
public static NewCourseChanges GetNewChanges(LocalCourse newCourse, LocalCourse oldCourse)
|
||||||
{
|
{
|
||||||
if (newCourse == oldCourse)
|
if (newCourse == oldCourse)
|
||||||
@@ -20,7 +67,18 @@ public static class CourseDifferences
|
|||||||
var newAssignments = newModule.Assignments.Where(
|
var newAssignments = newModule.Assignments.Where(
|
||||||
newAssignment => !oldModule.Assignments.Any(oldAssignment => newAssignment == oldAssignment)
|
newAssignment => !oldModule.Assignments.Any(oldAssignment => newAssignment == oldAssignment)
|
||||||
);
|
);
|
||||||
return newModule with { Assignments = newAssignments };
|
var newQuizzes = newModule.Quizzes.Where(
|
||||||
|
newQuiz => !oldModule.Quizzes.Any(oldQuiz => newQuiz == oldQuiz)
|
||||||
|
);
|
||||||
|
var newPages = newModule.Pages.Where(
|
||||||
|
newPage => !oldModule.Pages.Any(oldPage => newPage == oldPage)
|
||||||
|
);
|
||||||
|
return newModule with
|
||||||
|
{
|
||||||
|
Assignments = newAssignments,
|
||||||
|
Quizzes = newQuizzes,
|
||||||
|
Pages = newPages,
|
||||||
|
};
|
||||||
})
|
})
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
@@ -38,3 +96,8 @@ public record NewCourseChanges
|
|||||||
public IEnumerable<LocalModule> Modules { get; init; } = [];
|
public IEnumerable<LocalModule> Modules { get; init; } = [];
|
||||||
public LocalCourseSettings? Settings { get; init; }
|
public LocalCourseSettings? Settings { get; init; }
|
||||||
}
|
}
|
||||||
|
public record DeleteCourseChanges
|
||||||
|
{
|
||||||
|
public IEnumerable<string> NamesOfModulesToDeleteCompletely { get; init; } = [];
|
||||||
|
public IEnumerable<LocalModule> DeleteContentsOfModule { get; init; } = [];
|
||||||
|
}
|
||||||
@@ -26,7 +26,7 @@ Authorization: Bearer {{$dotenv CANVAS_TOKEN}}
|
|||||||
}
|
}
|
||||||
|
|
||||||
###
|
###
|
||||||
POST https://snow.instructure.com/api/v1/courses/705168/assignments
|
POST https://snow.instructure.com/api/v1/courses/959700/assignments
|
||||||
Authorization: Bearer {{$dotenv CANVAS_TOKEN}}
|
Authorization: Bearer {{$dotenv CANVAS_TOKEN}}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user