From a4179e6d52ba36163df0016542c1cb305b08a90a Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Fri, 12 Jan 2024 13:34:42 -0700 Subject: [PATCH] tests allow for pages to be stored and retrieved --- Management.Test/Markdown/FileStorageTests.cs | 41 +++++++++- Management.Test/Markdown/PageMarkdownTests.cs | 21 +++++ .../ViewModels/MonthDetailTests.cs | 4 +- .../Pages/Course/Module/ModuleDetail.razor | 9 +-- .../Pages/Course/Module/NewPage.razor | 76 +++++++++++++++++++ .../Course}/Quiz/DroppableQuiz.razor.cs | 0 .../LocalAssignmentMarkdownCreator.cs | 4 +- .../LocalAssignmentMarkdownParser.cs | 22 ++---- Management/Models/Local/LocalCoursePage.cs | 40 +++++++++- Management/Models/Local/MarkdownUtils.cs | 20 +++++ .../Services/Files/FileStorageManager.cs | 2 + .../Services/Files/LoadMarkdownCourse.cs | 21 +++++ .../Services/Files/SaveMarkdownCourse.cs | 53 ++++++++++++- 13 files changed, 279 insertions(+), 34 deletions(-) create mode 100644 Management.Test/Markdown/PageMarkdownTests.cs create mode 100644 Management.Web/Pages/Course/Module/NewPage.razor rename Management.Web/{Shared/Components => Pages/Course}/Quiz/DroppableQuiz.razor.cs (100%) create mode 100644 Management/Models/Local/MarkdownUtils.cs diff --git a/Management.Test/Markdown/FileStorageTests.cs b/Management.Test/Markdown/FileStorageTests.cs index 0d20c10..d732980 100644 --- a/Management.Test/Markdown/FileStorageTests.cs +++ b/Management.Test/Markdown/FileStorageTests.cs @@ -43,8 +43,8 @@ public class FileStorageTests var otherLogger = NullLoggerFactory.Instance.CreateLogger(); Environment.SetEnvironmentVariable("storageDirectory", storageDirectory); var config = new ConfigurationBuilder() - .AddEnvironmentVariables() - .Build(); + .AddEnvironmentVariables() + .Build(); var fileConfiguration = new FileConfiguration(config); var markdownLoader = new CourseMarkdownLoader(markdownLoaderLogger, fileConfiguration); @@ -252,4 +252,39 @@ public class FileStorageTests loadedCourse.Should().BeEquivalentTo(testCourse); } -} \ No newline at end of file + + + [Test] + 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", + DueDateForOrdering = new DateTime(), + Text = "this is some\n## markdown\n" + } + ] + } + ] + }; + + await fileManager.SaveCourseAsync(testCourse, null); + + var loadedCourses = await fileManager.LoadSavedMarkdownCourses(); + var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name); + + loadedCourse.Should().BeEquivalentTo(testCourse); + } +} diff --git a/Management.Test/Markdown/PageMarkdownTests.cs b/Management.Test/Markdown/PageMarkdownTests.cs new file mode 100644 index 0000000..d37c40f --- /dev/null +++ b/Management.Test/Markdown/PageMarkdownTests.cs @@ -0,0 +1,21 @@ +using LocalModels; + +public class PageMarkdownTests +{ + [Test] + public void TestCanParsePage() + { + var page = new LocalCoursePage + { + Name = "test title", + Text = "test text content", + DueDateForOrdering = new DateTime() + }; + + var pageMarkdown = page.ToMarkdown(); + + var parsedPage = LocalCoursePage.ParseMarkdown(pageMarkdown); + + parsedPage.Should().BeEquivalentTo(page); + } +} diff --git a/Management.Test/ViewModels/MonthDetailTests.cs b/Management.Test/ViewModels/MonthDetailTests.cs index 9865fa2..ffbdbc6 100644 --- a/Management.Test/ViewModels/MonthDetailTests.cs +++ b/Management.Test/ViewModels/MonthDetailTests.cs @@ -1,4 +1,4 @@ -using Management.Web.Shared.Semester; +using Management.Web.Pages.Course.CourseCalendar; public class MonthDetailTests { @@ -13,4 +13,4 @@ public class MonthDetailTests detail.MonthName.Should().Be("February"); } -} \ No newline at end of file +} diff --git a/Management.Web/Pages/Course/Module/ModuleDetail.razor b/Management.Web/Pages/Course/Module/ModuleDetail.razor index 61c05c5..50b13c0 100644 --- a/Management.Web/Pages/Course/Module/ModuleDetail.razor +++ b/Management.Web/Pages/Course/Module/ModuleDetail.razor @@ -120,13 +120,6 @@
- @*