From 6b665750e3ec6903501fcf4cd48638396c909b6e Mon Sep 17 00:00:00 2001 From: chrisbell Date: Wed, 7 Jan 2026 23:04:05 -0600 Subject: [PATCH] Begin process of adding unit tests with NUnit --- critterfolio/CritterFolio/CritterFolio.sln | 6 ++++ .../CritterFolio/CritterFolio.csproj | 6 ++++ .../CritterFolio/Pages/HomePage.axaml.cs | 2 +- .../CritterFolio/Pages/TestPage.axaml.cs | 4 +-- .../CritterFolioTests.csproj | 28 +++++++++++++++ .../CritterFolioTests/UnitTest1.cs | 34 +++++++++++++++++++ .../CritterFolio/Directory.Packages.props | 5 +++ 7 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 critterfolio/CritterFolio/CritterFolioTests/CritterFolioTests.csproj create mode 100644 critterfolio/CritterFolio/CritterFolioTests/UnitTest1.cs diff --git a/critterfolio/CritterFolio/CritterFolio.sln b/critterfolio/CritterFolio/CritterFolio.sln index 5593075..1dff9c1 100644 --- a/critterfolio/CritterFolio/CritterFolio.sln +++ b/critterfolio/CritterFolio/CritterFolio.sln @@ -18,6 +18,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Directory.Packages.props = Directory.Packages.props EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CritterFolioTests", "CritterFolioTests\CritterFolioTests.csproj", "{8FC9599B-8CE1-4AA2-B428-17F923598643}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -44,6 +46,10 @@ Global {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Debug|Any CPU.Build.0 = Debug|Any CPU {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Release|Any CPU.ActiveCfg = Release|Any CPU {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Release|Any CPU.Build.0 = Release|Any CPU + {8FC9599B-8CE1-4AA2-B428-17F923598643}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8FC9599B-8CE1-4AA2-B428-17F923598643}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8FC9599B-8CE1-4AA2-B428-17F923598643}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8FC9599B-8CE1-4AA2-B428-17F923598643}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/critterfolio/CritterFolio/CritterFolio/CritterFolio.csproj b/critterfolio/CritterFolio/CritterFolio/CritterFolio.csproj index 84ffa13..7ce8fe2 100644 --- a/critterfolio/CritterFolio/CritterFolio/CritterFolio.csproj +++ b/critterfolio/CritterFolio/CritterFolio/CritterFolio.csproj @@ -29,4 +29,10 @@ + + + + <_Parameter1>CritterFolioTests + + diff --git a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs index 60a3938..d6a9521 100644 --- a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs +++ b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs @@ -111,7 +111,7 @@ public partial class HomePage : Page Sys.Navigation?.PushPage(critterPage); } - private async void AddButtonClicked(object? sender, RoutedEventArgs e) + internal async void AddButtonClicked(object? sender, RoutedEventArgs e) { var newCritter = new Critter(); try diff --git a/critterfolio/CritterFolio/CritterFolio/Pages/TestPage.axaml.cs b/critterfolio/CritterFolio/CritterFolio/Pages/TestPage.axaml.cs index 68cb21f..b5758e0 100644 --- a/critterfolio/CritterFolio/CritterFolio/Pages/TestPage.axaml.cs +++ b/critterfolio/CritterFolio/CritterFolio/Pages/TestPage.axaml.cs @@ -48,8 +48,8 @@ public partial class TestPage : Page }; await DatabaseService.AddCritter(polities); - var torielId = (await DatabaseService.GetCritter("Toriel")).Id; - var poliId = (await DatabaseService.GetCritter("Polities")).Id; + var torielId = (await DatabaseService.GetCritter("Toriel"))!.Id; + var poliId = (await DatabaseService.GetCritter("Polities"))!.Id; var jessie = new Critter { diff --git a/critterfolio/CritterFolio/CritterFolioTests/CritterFolioTests.csproj b/critterfolio/CritterFolio/CritterFolioTests/CritterFolioTests.csproj new file mode 100644 index 0000000..9a4dbc0 --- /dev/null +++ b/critterfolio/CritterFolio/CritterFolioTests/CritterFolioTests.csproj @@ -0,0 +1,28 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + + + + diff --git a/critterfolio/CritterFolio/CritterFolioTests/UnitTest1.cs b/critterfolio/CritterFolio/CritterFolioTests/UnitTest1.cs new file mode 100644 index 0000000..e486fd9 --- /dev/null +++ b/critterfolio/CritterFolio/CritterFolioTests/UnitTest1.cs @@ -0,0 +1,34 @@ +using Avalonia.Interactivity; +using CritterFolio; +using CritterFolio.DataModels; +using CritterFolio.Pages; +using CritterFolio.Services; + +namespace CritterFolioTests; + +public class Tests +{ + [SetUp] + public void Setup() + { + } + + [Test] + public async Task TestAddingCritter() + { + var homePage = new HomePage(); + var currentCritterDbCount = (await DatabaseService.GetAllCritters()).Count; + + homePage.AddButtonClicked(null, new RoutedEventArgs()); + + var newCritterDbCount = (await DatabaseService.GetAllCritters()).Count; + + Assert.That(newCritterDbCount == currentCritterDbCount + 1, Is.True); + } + + [Test] + public async Task TestGettingCritter() + { + Assert.That(await DatabaseService.GetCritter(-1), Is.True); + } +} \ No newline at end of file diff --git a/critterfolio/CritterFolio/Directory.Packages.props b/critterfolio/CritterFolio/Directory.Packages.props index e919647..2b64959 100644 --- a/critterfolio/CritterFolio/Directory.Packages.props +++ b/critterfolio/CritterFolio/Directory.Packages.props @@ -20,5 +20,10 @@ + + + + + \ No newline at end of file