mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
diff check
This commit is contained in:
@@ -1,515 +0,0 @@
|
||||
|
||||
|
||||
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,297 +0,0 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
@@ -1,302 +0,0 @@
|
||||
using System.Configuration;
|
||||
using LocalModels;
|
||||
using Management.Services;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using NSubstitute;
|
||||
|
||||
public class FileStorageTests
|
||||
{
|
||||
private FileStorageManager fileManager { get; set; }
|
||||
|
||||
|
||||
public FileStorageTests()
|
||||
{
|
||||
var tempDirectory = Path.GetTempPath();
|
||||
var storageDirectory = tempDirectory + "fileStorageTests";
|
||||
Console.WriteLine(storageDirectory);
|
||||
if (!Directory.Exists(storageDirectory))
|
||||
Directory.CreateDirectory(storageDirectory);
|
||||
else
|
||||
{
|
||||
var dirInfo = new DirectoryInfo(storageDirectory);
|
||||
|
||||
foreach (var file in dirInfo.GetFiles())
|
||||
file.Delete();
|
||||
foreach (var dir in dirInfo.GetDirectories())
|
||||
dir.Delete(true);
|
||||
}
|
||||
|
||||
var fileManagerLogger = new MyLogger<FileStorageManager>(NullLogger<FileStorageManager>.Instance);
|
||||
var markdownLoaderLogger = new MyLogger<CourseMarkdownLoader>(NullLogger<CourseMarkdownLoader>.Instance);
|
||||
var markdownSaverLogger = new MyLogger<MarkdownCourseSaver>(NullLogger<MarkdownCourseSaver>.Instance);
|
||||
var otherLogger = NullLoggerFactory.Instance.CreateLogger<FileStorageManager>();
|
||||
Environment.SetEnvironmentVariable("storageDirectory", storageDirectory);
|
||||
var config = new ConfigurationBuilder()
|
||||
.AddEnvironmentVariables()
|
||||
.Build();
|
||||
var fileConfiguration = new FileConfiguration(config);
|
||||
|
||||
var markdownLoader = new CourseMarkdownLoader(markdownLoaderLogger, fileConfiguration);
|
||||
var markdownSaver = new MarkdownCourseSaver(markdownSaverLogger, fileConfiguration);
|
||||
fileManager = new FileStorageManager(fileManagerLogger, markdownLoader, markdownSaver, otherLogger, fileConfiguration);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EmptyCourse_CanBeSavedAndLoaded()
|
||||
{
|
||||
LocalCourse testCourse = new LocalCourse
|
||||
{
|
||||
Settings = new() { Name = "test empty course" },
|
||||
Modules = []
|
||||
};
|
||||
|
||||
await fileManager.SaveCourseAsync(testCourse, null);
|
||||
|
||||
var loadedCourses = await fileManager.LoadSavedCourses();
|
||||
var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name);
|
||||
|
||||
loadedCourse.Should().BeEquivalentTo(testCourse);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CourseSettings_CanBeSavedAndLoaded()
|
||||
{
|
||||
LocalCourse testCourse = new()
|
||||
{
|
||||
Settings = new()
|
||||
{
|
||||
AssignmentGroups = [],
|
||||
Name = "Test Course with settings",
|
||||
DaysOfWeek = [DayOfWeek.Monday, DayOfWeek.Wednesday],
|
||||
StartDate = new DateTime(),
|
||||
EndDate = new DateTime(),
|
||||
DefaultDueTime = new() { Hour = 1, Minute = 59 },
|
||||
},
|
||||
Modules = []
|
||||
};
|
||||
|
||||
await fileManager.SaveCourseAsync(testCourse, null);
|
||||
|
||||
var loadedCourses = await fileManager.LoadSavedCourses();
|
||||
var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name);
|
||||
|
||||
loadedCourse.Settings.Should().BeEquivalentTo(testCourse.Settings);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task EmptyCourseModules_CanBeSavedAndLoaded()
|
||||
{
|
||||
LocalCourse testCourse = new()
|
||||
{
|
||||
Settings = new() { Name = "Test Course with modules" },
|
||||
Modules = [
|
||||
new()
|
||||
{
|
||||
Name = "test module 1",
|
||||
Assignments = [],
|
||||
Quizzes = []
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await fileManager.SaveCourseAsync(testCourse, null);
|
||||
|
||||
var loadedCourses = await fileManager.LoadSavedCourses();
|
||||
var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name);
|
||||
|
||||
loadedCourse.Modules.Should().BeEquivalentTo(testCourse.Modules);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CourseModules_WithAssignments_CanBeSavedAndLoaded()
|
||||
{
|
||||
LocalCourse testCourse = new()
|
||||
{
|
||||
Settings = new() { Name = "Test Course with modules and assignments" },
|
||||
Modules = [
|
||||
new()
|
||||
{
|
||||
Name = "test module 1 with assignments",
|
||||
Assignments = [
|
||||
new()
|
||||
{
|
||||
Name = "test assignment",
|
||||
Description = "here is the description",
|
||||
DueAt = new DateTime(),
|
||||
LockAt = new DateTime(),
|
||||
SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD],
|
||||
LocalAssignmentGroupName = "Final Project",
|
||||
Rubric = [
|
||||
new() { Points = 4, Label = "do task 1" },
|
||||
new() { Points = 2, Label = "do task 2" },
|
||||
]
|
||||
}
|
||||
],
|
||||
Quizzes = []
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await fileManager.SaveCourseAsync(testCourse, null);
|
||||
|
||||
var loadedCourses = await fileManager.LoadSavedCourses();
|
||||
var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name);
|
||||
|
||||
var actualAssignments = loadedCourse.Modules.First().Assignments;
|
||||
var expectedAssignments = testCourse.Modules.First().Assignments;
|
||||
actualAssignments.Should().BeEquivalentTo(expectedAssignments);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task CourseModules_WithQuizzes_CanBeSavedAndLoaded()
|
||||
{
|
||||
LocalCourse testCourse = new()
|
||||
{
|
||||
Settings = new() { Name = "Test Course with modules and quiz" },
|
||||
Modules = [
|
||||
new()
|
||||
{
|
||||
Name = "test module 1 with quiz",
|
||||
Assignments = [],
|
||||
Quizzes = [
|
||||
new()
|
||||
{
|
||||
Name = "Test Quiz",
|
||||
Description = "quiz description",
|
||||
LockAt = new DateTime(2022, 10, 3, 12, 5, 0),
|
||||
DueAt = new DateTime(2022, 10, 3, 12, 5, 0),
|
||||
ShuffleAnswers = true,
|
||||
OneQuestionAtATime = true,
|
||||
LocalAssignmentGroupName = "Assignments",
|
||||
Questions = [
|
||||
new()
|
||||
{
|
||||
Text = "test essay",
|
||||
QuestionType = QuestionType.ESSAY,
|
||||
Points = 1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await fileManager.SaveCourseAsync(testCourse, null);
|
||||
|
||||
var loadedCourses = await fileManager.LoadSavedCourses();
|
||||
var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name);
|
||||
|
||||
loadedCourse.Modules.First().Quizzes.Should().BeEquivalentTo(testCourse.Modules.First().Quizzes);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task MarkdownStorage_FullyPopulated_DoesNotLoseData()
|
||||
{
|
||||
LocalCourse testCourse = new()
|
||||
{
|
||||
Settings = new()
|
||||
{
|
||||
AssignmentGroups = [],
|
||||
Name = "Test Course with lots of data",
|
||||
DaysOfWeek = [DayOfWeek.Monday, DayOfWeek.Wednesday],
|
||||
StartDate = new DateTime(),
|
||||
EndDate = new DateTime(),
|
||||
DefaultDueTime = new() { Hour = 1, Minute = 59 },
|
||||
},
|
||||
Modules = [
|
||||
new()
|
||||
{
|
||||
Name = "new test module",
|
||||
Assignments = [
|
||||
new()
|
||||
{
|
||||
Name = "test assignment",
|
||||
Description = "here is the description",
|
||||
DueAt = new DateTime(),
|
||||
LockAt = new DateTime(),
|
||||
SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD],
|
||||
LocalAssignmentGroupName = "Final Project",
|
||||
Rubric = [
|
||||
new() { Points = 4, Label = "do task 1" },
|
||||
new() { Points = 2, Label = "do task 2" },
|
||||
]
|
||||
}
|
||||
],
|
||||
Quizzes = [
|
||||
new()
|
||||
{
|
||||
Name = "Test Quiz",
|
||||
Description = "quiz description",
|
||||
LockAt = new DateTime(),
|
||||
DueAt = new DateTime(),
|
||||
ShuffleAnswers = true,
|
||||
OneQuestionAtATime = false,
|
||||
LocalAssignmentGroupName = "someId",
|
||||
AllowedAttempts = -1,
|
||||
Questions = [
|
||||
new()
|
||||
{
|
||||
Text = "test short answer",
|
||||
QuestionType = QuestionType.SHORT_ANSWER,
|
||||
Points = 1
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await fileManager.SaveCourseAsync(testCourse, null);
|
||||
|
||||
var loadedCourses = await fileManager.LoadSavedCourses();
|
||||
var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name);
|
||||
|
||||
loadedCourse.Should().BeEquivalentTo(testCourse);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task MarkdownStorage_CanPersistPages()
|
||||
{
|
||||
LocalCourse testCourse = new()
|
||||
{
|
||||
Settings = new()
|
||||
{
|
||||
AssignmentGroups = [],
|
||||
Name = "Test Course with page",
|
||||
DaysOfWeek = [DayOfWeek.Monday, DayOfWeek.Wednesday],
|
||||
StartDate = new DateTime(),
|
||||
EndDate = new DateTime(),
|
||||
DefaultDueTime = new() { Hour = 1, Minute = 59 },
|
||||
},
|
||||
Modules = [
|
||||
new()
|
||||
{
|
||||
Name = "page test module",
|
||||
Pages = [
|
||||
new()
|
||||
{
|
||||
Name = "test page persistence",
|
||||
DueAt = new DateTime(),
|
||||
Text = "this is some\n## markdown\n"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
await fileManager.SaveCourseAsync(testCourse, null);
|
||||
|
||||
var loadedCourses = await fileManager.LoadSavedCourses();
|
||||
var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name);
|
||||
|
||||
loadedCourse.Should().BeEquivalentTo(testCourse);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user