diff --git a/Tests/ExporterTests.cs b/Tests/ExporterTests.cs index a94c01b..0eab89e 100644 --- a/Tests/ExporterTests.cs +++ b/Tests/ExporterTests.cs @@ -49,7 +49,7 @@ public class ExporterTests : TestBase """; // Act - string exportedTagHierarchy = new MusicBeeTagHierarchyExporter().ExportDatabase(this.Database); + var exportedTagHierarchy = new MusicBeeTagHierarchyExporter().ExportDatabase(this.Database); exportedTagHierarchy = exportedTagHierarchy.ReplaceLineEndings("\n").TrimEnd(); // Assert diff --git a/Tests/ImporterTests.cs b/Tests/ImporterTests.cs index c04b85b..d9b3f1f 100644 --- a/Tests/ImporterTests.cs +++ b/Tests/ImporterTests.cs @@ -51,17 +51,17 @@ public class ImporterTests : TestBase Scenes & Movements Demoscene::movement """; - string tempFilePath = Path.GetTempFileName(); + var tempFilePath = Path.GetTempFileName(); await File.WriteAllTextAsync(tempFilePath, expectedExport); // Act TagDatabase db = new(); - Dictionary testData = + var testData = await new MusicBeeTagHierarchyImporter().ImportFromFileAsync(tempFilePath); await db.CreateAsync(":memory:", tagsToImport: testData); - string exportedTagHierarchy = new MusicBeeTagHierarchyExporter().ExportDatabase(db); + var exportedTagHierarchy = new MusicBeeTagHierarchyExporter().ExportDatabase(db); exportedTagHierarchy = exportedTagHierarchy.ReplaceLineEndings("\n").TrimEnd(); // Assert @@ -90,7 +90,7 @@ public class ImporterTests : TestBase [TestCase(" Ambient")] public async Task ImportAsync_ImportMusicBeeTagHierarchy_ArgumentExceptionThrown(string brokenHierarchy) { - string tempFilePath = Path.GetTempFileName(); + var tempFilePath = Path.GetTempFileName(); await File.WriteAllTextAsync(tempFilePath, brokenHierarchy); Importer importer = new MusicBeeTagHierarchyImporter(); @@ -121,7 +121,7 @@ public class ImporterTests : TestBase public async Task ImportAsync_ImportMusicBeeTagHierarchy_TagHierarchyDataExceptionThrown(string brokenHierarchy, int lineNumber) { - string tempFilePath = Path.GetTempFileName(); + var tempFilePath = Path.GetTempFileName(); await File.WriteAllTextAsync(tempFilePath, brokenHierarchy); Importer importer = new MusicBeeTagHierarchyImporter(); Exception? ex = diff --git a/Tests/SettingsTests.cs b/Tests/SettingsTests.cs index eca21ca..50f1d39 100644 --- a/Tests/SettingsTests.cs +++ b/Tests/SettingsTests.cs @@ -22,7 +22,7 @@ public class SettingsTests : TestBase { // Arrange/Act await this.Database.Settings.CreateSettingAsync(AddedTestKey, AddedTestValue); - string? retrievedSetting = await this.Database.Settings.GetSettingValueAsync(AddedTestKey); + var retrievedSetting = await this.Database.Settings.GetSettingValueAsync(AddedTestKey); // Assert Assert.That(retrievedSetting, Is.EqualTo(AddedTestValue)); @@ -39,7 +39,7 @@ public class SettingsTests : TestBase await this.AddTestSetting(); // Act/Assert - ArgumentException ex = Assert.ThrowsAsync(async () => + var ex = Assert.ThrowsAsync(async () => await this.Database.Settings.CreateSettingAsync(AddedTestKey, AddedTestValue)) !; } @@ -58,8 +58,8 @@ public class SettingsTests : TestBase await this.Database.SetDefaultTagBindingsAsync(changedTagBindings); // Assert - string? settingValueString = await this.Database.Settings.GetSettingValueAsync(ExpectedTagBindKey); - List changedTagBindingsList = settingValueString! + var settingValueString = await this.Database.Settings.GetSettingValueAsync(ExpectedTagBindKey); + var changedTagBindingsList = settingValueString! .Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToList(); Assert.That(settingValueString, Is.EqualTo(string.Join(';', this.Database.DefaultTagBindings))); Assert.That(changedTagBindingsList, Is.EquivalentTo(changedTagBindings)); @@ -102,7 +102,7 @@ public class SettingsTests : TestBase [Test] public void DeleteSetting_ThrowKeyNotFoundExceptionIfSettingNotFound() { - KeyNotFoundException ex = Assert.ThrowsAsync(async () => + var ex = Assert.ThrowsAsync(async () => await this.Database.Settings.DeleteSettingAsync(NonExistentKey)) !; } @@ -117,7 +117,7 @@ public class SettingsTests : TestBase public async Task GetAllSettings_RequiredSettingsKeysValidated(string key) { // Arrange/Act - Dictionary retrievedKeys = await this.Database.Settings.GetAllSettingsAsync(); + var retrievedKeys = await this.Database.Settings.GetAllSettingsAsync(); // Assert Assert.That(retrievedKeys.Keys, Contains.Item(key)); @@ -134,7 +134,7 @@ public class SettingsTests : TestBase await this.AddTestSetting(); // Act - Dictionary retrievedKeys = await this.Database.Settings.GetAllSettingsAsync(); + var retrievedKeys = await this.Database.Settings.GetAllSettingsAsync(); // Assert Assert.That(retrievedKeys.Keys, Contains.Item(AddedTestKey)); @@ -176,7 +176,7 @@ public class SettingsTests : TestBase [Test] public void UpdateSetting_ThrowKeyNotFoundExceptionIfSettingNotFound() { - KeyNotFoundException? ex = Assert.ThrowsAsync(async () => + var ex = Assert.ThrowsAsync(async () => await this.Database.Settings.UpdateSettingAsync(NonExistentKey, "testvalue")); } diff --git a/Tests/TagDatabaseInitTests.cs b/Tests/TagDatabaseInitTests.cs index 80936ae..2ea5628 100644 --- a/Tests/TagDatabaseInitTests.cs +++ b/Tests/TagDatabaseInitTests.cs @@ -30,10 +30,10 @@ public class TagDatabaseInitTests : TestBase { // Arrange const string invalidDbName = "invalid_file.thdb"; - string invalidDbPath = Path.Combine(TestDbsDir, invalidDbName); + var invalidDbPath = Path.Combine(TestDbsDir, invalidDbName); try { - await using FileStream file = File.Open(invalidDbPath, FileMode.CreateNew); + await using var file = File.Open(invalidDbPath, FileMode.CreateNew); } catch (IOException) { @@ -41,7 +41,7 @@ public class TagDatabaseInitTests : TestBase } TagDatabase dummyDb = new(); - + // Act/Assert Exception? ex = Assert.ThrowsAsync(async () => await dummyDb.LoadAsync(invalidDbPath)); } @@ -71,7 +71,7 @@ public class TagDatabaseInitTests : TestBase // Arrange SqliteConnection invalidConnection = new("Data Source=:memory:"); await invalidConnection.OpenAsync(); - SqliteCommand command = invalidConnection.CreateCommand(); + var command = invalidConnection.CreateCommand(); command.CommandText = """ CREATE TABLE "invalid" ( "id" INTEGER @@ -93,7 +93,7 @@ public class TagDatabaseInitTests : TestBase public async Task TagDatabaseInit_NewTagDatabase_ReturnsInitializedDatabase() { // Arrange/Act - bool isInitialised = false; + var isInitialised = false; TagDatabase db = new(); db.InitialisationComplete += (_, _) => { isInitialised = true; }; await db.CreateAsync(":memory:"); diff --git a/Tests/TagDatabaseSaveTests.cs b/Tests/TagDatabaseSaveTests.cs index 1b5119f..de22d5f 100644 --- a/Tests/TagDatabaseSaveTests.cs +++ b/Tests/TagDatabaseSaveTests.cs @@ -25,16 +25,41 @@ public class TagDatabaseWriteTests : TestBase [SetUp] public async Task ClearDatabaseAndAddSampleData() { - var sampleOfSampleData = new List() + var sampleOfSampleData = new List { TestSampleTags.Ambient, TestSampleTags.Electronic }; - + this.Database.ClearTags(); foreach (var tag in sampleOfSampleData) await this.Database.WriteTagToDatabase(tag); } - + + /// + /// Tests if an is thrown on deleting a tag that does not exist. + /// + [Test] + public void TagDatabase_DeleteTag_ThrowExceptionOnDeletingNonExistentTag() + { + var exId = + Assert.ThrowsAsync(async () => await this.Database.DeleteTag(1000)); + } + + [Test] + public async Task TagDatabase_WriteTagsToDatabase_TagAdded() + { + // Arrange + List testTags = [TestSampleTags.Ambient, TestSampleTags.Electronic, TestSampleTags.SpaceAmbient]; + this.Database.ClearTags(); + + // Act + foreach (var tag in testTags) await this.Database.WriteTagToDatabase(tag); + + // Assert + var retrievedTags = await this.Database.GetAllTagsFromDatabase(); + Assert.That(retrievedTags.Count, Is.EqualTo(testTags.Count)); + } + [Test] public async Task TagDatabase_WriteTagsToDatabase_TagDeleted() { @@ -48,30 +73,102 @@ public class TagDatabaseWriteTests : TestBase Tag deletedTag = new() { Name = "DELETE ME", - IsTopLevel = true, + IsTopLevel = true }; await db.WriteTagToDatabase(deletedTag); // Act await db.DeleteTag(deletedTag.Id); - + // Assert Assert.That(test!.Added.Count, Is.EqualTo(0)); Assert.That(test.Updated.Count, Is.EqualTo(0)); Assert.That(test.Deleted.Count, Is.EqualTo(1)); Assert.That(db.Tags.Any(t => t.Name == deletedTag.Name), Is.False); - + db.TagsWritten -= handler; } - /// - /// Tests if an is thrown on deleting a tag that does not exist. - /// [Test] - public void TagDatabase_DeleteTag_ThrowExceptionOnDeletingNonExistentTag() + public async Task TagDatabase_WriteTagsToDatabase_TagWrittenAddedEvent() { - ArgumentException? exId = - Assert.ThrowsAsync(async () => await this.Database.DeleteTag(1000)); + // Arrange + TagDatabase.DatabaseEditResult? test = null; + TagDatabase db = new(); + await db.CreateAsync(":memory:"); + db.InitialisationComplete += (_, _) => Assert.Pass(); + db.TagsWritten += (_, result) => test = result; + + // Act + await db.WriteTagToDatabase(TestSampleTags.Ambient); + + // Assert + Assert.That(test!.Added.Count, Is.EqualTo(1)); + Assert.That(test.Updated.Count, Is.EqualTo(0)); + Assert.That(test.Deleted.Count, Is.EqualTo(0)); + } + + [Test] + public async Task TagDatabase_WriteTagsToDatabase_TagWrittenEvent_ExternalTransaction() + { + // Arrange + TagDatabase.DatabaseEditResult? test = null; + TagDatabase db = new(); + await db.CreateAsync(":memory:"); + db.InitialisationComplete += (_, _) => Assert.Pass(); + + EventHandler handler = (_, result) => test = result; + db.TagsWritten += handler; + + List testTags = [TestSampleTags.Ambient, TestSampleTags.Electronic, TestSampleTags.SpaceAmbient]; + + // Act/Assert + var transaction = await db.BeginExternalTransactionAsync(); + foreach (var tag in testTags) await db.WriteTagToDatabase(tag, transaction); + await transaction.CommitAsync(); + + Assert.That(test!.Added.Count, Is.EqualTo(testTags.Count)); + Assert.That(test.Updated.Count, Is.EqualTo(0)); + Assert.That(test.Deleted.Count, Is.EqualTo(0)); + + var retrievedTag = db.Tags.First(t => t.Name == testTags[0].Name); + Assert.That(retrievedTag, Is.Not.Null); + retrievedTag.Notes = "test edit"; + await db.WriteTagToDatabase(retrievedTag); + Assert.That(test.Updated.Count, Is.EqualTo(1)); + + var deletedTag = db.Tags.First(t => t.Name == testTags[2].Name); + await db.DeleteTag(deletedTag.Id); + Assert.That(test.Deleted.Count, Is.EqualTo(1)); + Assert.That(db.Tags.FirstOrDefault(t => t.Name == testTags[2].Name), Is.Null); + + db.TagsWritten -= handler; + } + + [Test] + public async Task TagDatabase_WriteTagsToDatabase_TagWrittenUpdatedEvent() + { + // Arrange + TagDatabase.DatabaseEditResult? test = null; + TagDatabase db = new(); + await db.CreateAsync(":memory:"); + db.InitialisationComplete += (_, _) => Assert.Pass(); + EventHandler handler = (_, result) => test = result; + db.TagsWritten += handler; + + // Act + await db.WriteTagToDatabase(TestSampleTags.Ambient); + var retrievedTag = db.Tags.First(t => t.Name == TestSampleTags.Ambient.Name); + retrievedTag.Notes = "test edit"; + await db.WriteTagToDatabase(retrievedTag); + Assert.That(test!.Updated.Count, Is.EqualTo(1)); + + // Assert + Assert.That(test.Added.Count, Is.EqualTo(0)); + Assert.That(test.Updated.Count, Is.EqualTo(1)); + Assert.That(test.Deleted.Count, Is.EqualTo(0)); + + db.TagsWritten -= handler; } /// @@ -85,28 +182,25 @@ public class TagDatabaseWriteTests : TestBase Tag firstParentTag = new() { Name = "Test parent tag 1", - IsTopLevel = true, + IsTopLevel = true }; Tag secondParentTag = new() { Name = "Test parent tag 2", - IsTopLevel = true, + IsTopLevel = true }; Tag childTag = new() { Name = "Test child tag", IsTopLevel = false, TagBindings = ["genre"], - Parents = ["Test parent tag 1"], + Parents = ["Test parent tag 1"] }; - var testTags = new List {firstParentTag, secondParentTag, childTag}; + var testTags = new List { firstParentTag, secondParentTag, childTag }; - foreach (var tag in testTags) - { - await this.Database.WriteTagToDatabase(tag); - } - - int childTagId = childTag.Id; + foreach (var tag in testTags) await this.Database.WriteTagToDatabase(tag); + + var childTagId = childTag.Id; List expectedParents = [firstParentTag.Id, secondParentTag.Id]; const string newName = "Test child tag (edited)"; @@ -123,15 +217,13 @@ public class TagDatabaseWriteTests : TestBase childTag.TagBindings.Add(addedTagBind); childTag.Parents.Add(addedParentName); foreach (var parentTag in childTag.Parents.Select(parent => this.Database.Tags.First(p => p.Name == parent))) - { childTag.ParentIds.Add(parentTag.Id); - } childTag.Notes = newNotes; childTag.Aliases = newAliases; await this.Database.WriteTagToDatabase(childTag); // Assert - Tag? editedChildTag = await this.Database.SelectTagFromDatabase(childTagId); + var editedChildTag = await this.Database.SelectTagFromDatabase(childTagId); const int expectedParentCount = 2; const int expectedAliasCount = 1; @@ -155,11 +247,9 @@ public class TagDatabaseWriteTests : TestBase public async Task TagDatabase_WriteTagToDatabase_WriteTag(Tag inputTag) { // Arrange - bool tagValidated = inputTag.Validate(); + var tagValidated = inputTag.Validate(); foreach (var parentTag in inputTag.Parents.Select(parent => this.Database.Tags.First(p => p.Name == parent))) - { inputTag.ParentIds.Add(parentTag.Id); - } // Act await this.Database.WriteTagToDatabase(inputTag); @@ -177,10 +267,10 @@ public class TagDatabaseWriteTests : TestBase Assert.That(savedTag.Parents.Count, Is.EqualTo(inputTag.Parents.Count)); Assert.That(savedTag.Parents, Is.EquivalentTo(inputTag.Parents)); Assert.That(savedTag.ParentIds.Count, Is.EqualTo(inputTag.Parents.Count)); - List parentTags = await savedTag.ParentIds.ToAsyncEnumerable() + var parentTags = await savedTag.ParentIds.ToAsyncEnumerable() .Select(async (int parentId, CancellationToken _) => { - Tag? tag = await this.Database.SelectTagFromDatabase(parentId); + var tag = await this.Database.SelectTagFromDatabase(parentId); return tag!.Name; }).ToListAsync(); Assert.That(parentTags, Is.EquivalentTo(inputTag.Parents)); @@ -188,108 +278,4 @@ public class TagDatabaseWriteTests : TestBase Assert.That(savedTag.Aliases, Is.EquivalentTo(inputTag.Aliases)); } } - - [Test] - public async Task TagDatabase_WriteTagsToDatabase_TagAdded() - { - // Arrange - List testTags = [TestSampleTags.Ambient, TestSampleTags.Electronic, TestSampleTags.SpaceAmbient]; - this.Database.ClearTags(); - - // Act - foreach (var tag in testTags) - { - await this.Database.WriteTagToDatabase(tag); - } - - // Assert - var retrievedTags = await this.Database.GetAllTagsFromDatabase(); - Assert.That(retrievedTags.Count, Is.EqualTo(testTags.Count)); - } - - [Test] - public async Task TagDatabase_WriteTagsToDatabase_TagWrittenAddedEvent() - { - // Arrange - TagDatabase.DatabaseEditResult? test = null; - TagDatabase db = new(); - await db.CreateAsync(":memory:"); - db.InitialisationComplete += (_, _) => Assert.Pass(); - db.TagsWritten += (_, result) => test = result; - - // Act - await db.WriteTagToDatabase(TestSampleTags.Ambient); - - // Assert - Assert.That(test!.Added.Count, Is.EqualTo(1)); - Assert.That(test.Updated.Count, Is.EqualTo(0)); - Assert.That(test.Deleted.Count, Is.EqualTo(0)); - } - - [Test] - public async Task TagDatabase_WriteTagsToDatabase_TagWrittenUpdatedEvent() - { - // Arrange - TagDatabase.DatabaseEditResult? test = null; - TagDatabase db = new(); - await db.CreateAsync(":memory:"); - db.InitialisationComplete += (_, _) => Assert.Pass(); - EventHandler handler = (_, result) => test = result; - db.TagsWritten += handler; - - // Act - await db.WriteTagToDatabase(TestSampleTags.Ambient); - var retrievedTag = db.Tags.First(t => t.Name == TestSampleTags.Ambient.Name); - retrievedTag.Notes = "test edit"; - await db.WriteTagToDatabase(retrievedTag); - Assert.That(test!.Updated.Count, Is.EqualTo(1)); - - // Assert - Assert.That(test.Added.Count, Is.EqualTo(0)); - Assert.That(test.Updated.Count, Is.EqualTo(1)); - Assert.That(test.Deleted.Count, Is.EqualTo(0)); - - db.TagsWritten -= handler; - } - - [Test] - public async Task TagDatabase_WriteTagsToDatabase_TagWrittenEvent_ExternalTransaction() - { - // Arrange - TagDatabase.DatabaseEditResult? test = null; - TagDatabase db = new(); - await db.CreateAsync(":memory:"); - db.InitialisationComplete += (_, _) => Assert.Pass(); - - EventHandler handler = (_, result) => test = result; - db.TagsWritten += handler; - - List testTags = [TestSampleTags.Ambient, TestSampleTags.Electronic, TestSampleTags.SpaceAmbient]; - - // Act/Assert - var transaction = await db.BeginExternalTransactionAsync(); - foreach (var tag in testTags) - { - await db.WriteTagToDatabase(tag, transaction); - } - await transaction.CommitAsync(); - - Assert.That(test!.Added.Count, Is.EqualTo(testTags.Count)); - Assert.That(test.Updated.Count, Is.EqualTo(0)); - Assert.That(test.Deleted.Count, Is.EqualTo(0)); - - Tag retrievedTag = db.Tags.First(t => t.Name == testTags[0].Name); - Assert.That(retrievedTag, Is.Not.Null); - retrievedTag.Notes = "test edit"; - await db.WriteTagToDatabase(retrievedTag); - Assert.That(test.Updated.Count, Is.EqualTo(1)); - - Tag deletedTag = db.Tags.First(t => t.Name == testTags[2].Name); - await db.DeleteTag(deletedTag.Id); - Assert.That(test.Deleted.Count, Is.EqualTo(1)); - Assert.That(db.Tags.FirstOrDefault(t => t.Name == testTags[2].Name), Is.Null); - - db.TagsWritten -= handler; - } -} - \ No newline at end of file +} \ No newline at end of file diff --git a/Tests/TagDatabaseSearchTests.cs b/Tests/TagDatabaseSearchTests.cs index cd4f3e6..2bb8308 100644 --- a/Tests/TagDatabaseSearchTests.cs +++ b/Tests/TagDatabaseSearchTests.cs @@ -75,7 +75,7 @@ public class TagDatabaseSearchTests : TestBase tag.Name.ToLower() == TestQuery.ToLower()) .Select(tag => tag.Name) .ToList() - }, + } }; /// @@ -91,8 +91,8 @@ public class TagDatabaseSearchTests : TestBase const string query = "ambionte"; // Act - List tags = this.Database.Search(query, TagDatabaseSearchMode.Fuzzy); - List tagsWithAliases = this.Database.SearchWithAliases(query, TagDatabaseSearchMode.Fuzzy); + var tags = this.Database.Search(query, TagDatabaseSearchMode.Fuzzy); + var tagsWithAliases = this.Database.SearchWithAliases(query, TagDatabaseSearchMode.Fuzzy); // Assert Assert.That(tags.Count, Is.EqualTo(0)); Assert.That(tagsWithAliases.Count, Is.EqualTo(0)); @@ -122,13 +122,13 @@ public class TagDatabaseSearchTests : TestBase IsTopLevel = false, TagBindings = ["genre", "style"], Parents = ["Ambient", "Electronic"], - Aliases = ["áéíóúçýỷủ"], + Aliases = ["áéíóúçýỷủ"] }; await this.Database.WriteTagToDatabase(normalisedTest); // Act - List tags = this.Database.SearchWithAliases(query, mode); - List tagNames = tags.Select(tag => tag.Name).ToList(); + var tags = this.Database.SearchWithAliases(query, mode); + var tagNames = tags.Select(tag => tag.Name).ToList(); // Assert Assert.That(tags.Count, Is.EqualTo(1)); @@ -165,9 +165,9 @@ public class TagDatabaseSearchTests : TestBase TestName = "TagDatabase_SearchForTags_WithResults_NoAKAsExactMatch")] public void TagDatabase_SearchForTags_SearchResultsNoAlias(TagDatabaseSearchMode mode, string expectedResultKey) { - List retrievedTags = this.Database.Search(TestQuery, mode); + var retrievedTags = this.Database.Search(TestQuery, mode); - List retrievedTagNames = retrievedTags.Select(tag => tag.Name).ToList(); + var retrievedTagNames = retrievedTags.Select(tag => tag.Name).ToList(); Assert.That(retrievedTagNames, Is.EquivalentTo(this.expectedSearchResults[expectedResultKey])); } @@ -190,9 +190,9 @@ public class TagDatabaseSearchTests : TestBase TestName = "TagDatabase_SearchForTags_WithResults_WithAKAsExactMatch")] public void TagDatabase_SearchForTags_SearchResultsWithAlias(TagDatabaseSearchMode mode, string expectedResultKey) { - List retrievedTags = this.Database.SearchWithAliases(TestQuery, mode); + var retrievedTags = this.Database.SearchWithAliases(TestQuery, mode); - List retrievedTagNames = retrievedTags.Select(tag => tag.Name).ToList(); + var retrievedTagNames = retrievedTags.Select(tag => tag.Name).ToList(); Assert.That(retrievedTagNames, Is.EquivalentTo(this.expectedSearchResults[expectedResultKey])); } diff --git a/Tests/TagDatabaseTagRetrievalTests.cs b/Tests/TagDatabaseTagRetrievalTests.cs index 4720620..a5d0807 100644 --- a/Tests/TagDatabaseTagRetrievalTests.cs +++ b/Tests/TagDatabaseTagRetrievalTests.cs @@ -28,13 +28,13 @@ public class TagDatabaseTagRetrievalTests : TestBase public async Task TagDatabase_GetAllTags_AllTags() { // Arrange - List expectedNames = TestSampleTags.AllTags() + var expectedNames = TestSampleTags.AllTags() .Select(tag => tag.Name) .ToList(); // Act - List tags = await this.Database.GetAllTagsFromDatabase(); - List retrievedNames = tags.Select(tag => tag.Name).ToList(); + var tags = await this.Database.GetAllTagsFromDatabase(); + var retrievedNames = tags.Select(tag => tag.Name).ToList(); // Assert Assert.That(tags.Count, Is.EqualTo(expectedNames.Count)); @@ -50,14 +50,14 @@ public class TagDatabaseTagRetrievalTests : TestBase public async Task TagDatabase_GetAllTags_AllTopLevelTags() { // Arrange - List expectedNames = TestSampleTags.AllTags() + var expectedNames = TestSampleTags.AllTags() .Where(tag => tag.IsTopLevel) .Select(tag => tag.Name) .ToList(); // Act - List tags = await this.Database.GetAllTagsFromDatabase(true); - List retrievedNames = tags.Select(tag => tag.Name).ToList(); + var tags = await this.Database.GetAllTagsFromDatabase(true); + var retrievedNames = tags.Select(tag => tag.Name).ToList(); // Assert Assert.That(tags.Count, Is.EqualTo(expectedNames.Count)); @@ -72,17 +72,17 @@ public class TagDatabaseTagRetrievalTests : TestBase public void TagDatabase_GetTagChildren() { // Arrange - string tagNameToQuery = TestSampleTags.Ambient.Name; + var tagNameToQuery = TestSampleTags.Ambient.Name; List expectedNames = [ TestSampleTags.DarkAmbient.Name, TestSampleTags.TribalAmbient.Name, - TestSampleTags.SpaceAmbient.Name, + TestSampleTags.SpaceAmbient.Name ]; // Act - List tags = this.Database.GetTagChildren(tagNameToQuery); - List retrievedNames = tags.Select(tag => tag.Name).ToList(); + var tags = this.Database.GetTagChildren(tagNameToQuery); + var retrievedNames = tags.Select(tag => tag.Name).ToList(); // Assert Assert.That(tags.Count, Is.EqualTo(expectedNames.Count)); diff --git a/Tests/TagHierarchyManager.Tests.csproj b/Tests/TagHierarchyManager.Tests.csproj index 4514185..6ff0f98 100644 --- a/Tests/TagHierarchyManager.Tests.csproj +++ b/Tests/TagHierarchyManager.Tests.csproj @@ -9,12 +9,12 @@ - + - + - - + + diff --git a/Tests/TagObjectTests.cs b/Tests/TagObjectTests.cs index de9080f..e1aee28 100644 --- a/Tests/TagObjectTests.cs +++ b/Tests/TagObjectTests.cs @@ -55,7 +55,7 @@ public class TagObjectTests : TestBase { Name = "Ritual Ambient", Parents = ["Ambient"], - IsTopLevel = false, + IsTopLevel = false }; // Act @@ -88,11 +88,11 @@ public class TagObjectTests : TestBase TagBindings = tagBindings, Parents = parentNames, Notes = notes, - Aliases = aliases, + Aliases = aliases }; // Act - bool tagValidated = testTag.Validate(); + var tagValidated = testTag.Validate(); // Assert Assert.That(tagValidated, Is.EqualTo(true)); @@ -109,7 +109,7 @@ public class TagObjectTests : TestBase Tag invalidTag = new() { Name = "Orphan Tag Test", - IsTopLevel = false, + IsTopLevel = false }; // Act/Assert @@ -128,7 +128,7 @@ public class TagObjectTests : TestBase { Name = "Ritual Ambient", Parents = [], - IsTopLevel = false, + IsTopLevel = false }; // Assert @@ -147,7 +147,7 @@ public class TagObjectTests : TestBase { Name = "Ambient", Parents = ["Ambient"], - IsTopLevel = false, + IsTopLevel = false }; // Act/Assert diff --git a/Tests/TestBase.cs b/Tests/TestBase.cs index 69e1306..5675b73 100644 --- a/Tests/TestBase.cs +++ b/Tests/TestBase.cs @@ -50,38 +50,32 @@ public abstract class TestBase nameof(SettingsTests), nameof(TagObjectTests), nameof(TagDatabaseWriteTests), - nameof(ImporterTests), + nameof(ImporterTests) ]; - string? className = TestContext.CurrentContext.Test.ClassName; + var className = TestContext.CurrentContext.Test.ClassName; Logger.Debug("[TestBase.PopulateSampleData] Current class name: {ClassName}", className); if (className == null || ignoredClasses.Contains(className.Replace("TagHierarchyManager.Tests.", string.Empty))) { - Logger.Debug("[TestBase.PopulateSampleData] Ignoring as class name {ClassName} in ignoredClasses", className); + Logger.Debug("[TestBase.PopulateSampleData] Ignoring as class name {ClassName} in ignoredClasses", + className); return; } - List sampleTags = TestSampleTags.AllTags(); + var sampleTags = TestSampleTags.AllTags(); this.Database.ClearTags(); - + // phase 1: add with no parents. - foreach (var tag in sampleTags) - { - await this.Database.WriteTagToDatabase(tag); - } - + foreach (var tag in sampleTags) await this.Database.WriteTagToDatabase(tag); + // phase 2: add the parents foreach (var tag in sampleTags) { foreach (var parentTag in tag.Parents.Select(parent => this.Database.Tags.First(p => p.Name == parent))) - { tag.ParentIds.Add(parentTag.Id); - } await this.Database.WriteTagToDatabase(tag); } - - } // do not use in Test1_Init. That needs to be tested at a lower level. @@ -117,7 +111,7 @@ public abstract class TestBase { Name = "Ambient", IsTopLevel = true, - TagBindings = ExpectedTagBindings, + TagBindings = ExpectedTagBindings }; /// @@ -129,7 +123,7 @@ public abstract class TestBase IsTopLevel = false, TagBindings = ExpectedTagBindings, Parents = ["Ambient", "Post-Industrial"], - Aliases = ["Ambient Industrial"], + Aliases = ["Ambient Industrial"] }; /// @@ -139,7 +133,7 @@ public abstract class TestBase { Name = "Electronic", IsTopLevel = true, - TagBindings = ExpectedTagBindings, + TagBindings = ExpectedTagBindings }; /// @@ -149,7 +143,7 @@ public abstract class TestBase { Name = "Industrial & Noise", IsTopLevel = true, - TagBindings = ExpectedTagBindings, + TagBindings = ExpectedTagBindings }; /// @@ -160,7 +154,7 @@ public abstract class TestBase Name = "Post-Industrial", IsTopLevel = false, TagBindings = ExpectedTagBindings, - Parents = ["Industrial & Noise"], + Parents = ["Industrial & Noise"] }; /// @@ -172,7 +166,7 @@ public abstract class TestBase IsTopLevel = false, TagBindings = ExpectedTagBindings, Parents = ["Dark Ambient"], - Aliases = ["Ritual Dark Ambient", "Dark Ritual Ambient"], + Aliases = ["Ritual Dark Ambient", "Dark Ritual Ambient"] }; /// @@ -183,7 +177,7 @@ public abstract class TestBase Name = "Space Ambient", IsTopLevel = false, TagBindings = ExpectedTagBindings, - Parents = ["Ambient", "Electronic"], + Parents = ["Ambient", "Electronic"] }; /// @@ -195,7 +189,7 @@ public abstract class TestBase IsTopLevel = false, TagBindings = ExpectedTagBindings, Parents = ["Ambient"], - Aliases = ["Ethnic Ambient", "Ethno Ambient"], + Aliases = ["Ethnic Ambient", "Ethno Ambient"] }; /// @@ -213,7 +207,7 @@ public abstract class TestBase DarkAmbient, RitualAmbient, SpaceAmbient, - TribalAmbient, + TribalAmbient ]; } }