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 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)
|
||||
{
|
||||
if (newCourse == oldCourse)
|
||||
@@ -20,7 +67,18 @@ public static class CourseDifferences
|
||||
var newAssignments = newModule.Assignments.Where(
|
||||
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();
|
||||
|
||||
@@ -37,4 +95,9 @@ public record NewCourseChanges
|
||||
{
|
||||
public IEnumerable<LocalModule> Modules { 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}}
|
||||
|
||||
{
|
||||
@@ -139,4 +139,4 @@ GET https://snow.instructure.com/api/v1/courses/871954/assignment_groups/1943132
|
||||
Authorization: Bearer {{$dotenv CANVAS_TOKEN}}
|
||||
###
|
||||
GET https://snow.instructure.com/api/v1/courses/871954
|
||||
Authorization: Bearer {{$dotenv CANVAS_TOKEN}}
|
||||
Authorization: Bearer {{$dotenv CANVAS_TOKEN}}
|
||||
|
||||
Reference in New Issue
Block a user