From f5a453c1901c0a07e861afb29858d074db19f401 Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Mon, 16 Feb 2026 15:33:03 -0500 Subject: [PATCH 1/8] Update audio tests --- .../Controllers/AudioControllerTests.cs | 31 +++++++++---------- Backend.Tests/Services/WordServiceTests.cs | 27 +++++++++++++--- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/Backend.Tests/Controllers/AudioControllerTests.cs b/Backend.Tests/Controllers/AudioControllerTests.cs index 2ceb7f9087..515ca432e6 100644 --- a/Backend.Tests/Controllers/AudioControllerTests.cs +++ b/Backend.Tests/Controllers/AudioControllerTests.cs @@ -110,9 +110,12 @@ public void TestUploadAudioFileNoWord() [Test] public void TestUploadAudioFile() { - _ = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", _file).Result; + var result = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", _file).Result; + Assert.That(result, Is.TypeOf()); + var newId = (string)((OkObjectResult)result)!.Value!; + Assert.That(newId, Is.Not.EqualTo(_wordId)); - var foundWord = _wordRepo.GetWord(_projId, _wordId).Result; + var foundWord = _wordRepo.GetWord(_projId, newId).Result; Assert.That(foundWord?.Audio, Is.Not.Null); } @@ -170,31 +173,25 @@ public void TestDeleteAudioFile() { // Refill test database _wordRepo.DeleteAllWords(_projId); + _wordRepo.DeleteAllFrontierWords(_projId); var origWord = Util.RandomWord(_projId); const string fileName = "a.wav"; origWord.Audio.Add(new Pronunciation(fileName)); - var wordId = _wordRepo.Create(origWord).Result.Id; + var oldId = _wordRepo.Create(origWord).Result.Id; // Test delete function - _ = _audioController.DeleteAudioFile(_projId, wordId, fileName).Result; + var result = _audioController.DeleteAudioFile(_projId, oldId, fileName).Result as OkObjectResult; + var newId = result?.Value as string; - // Original word persists - Assert.That(_wordRepo.GetAllWords(_projId).Result, Has.Count.EqualTo(2)); - - // Get the new word from the database - var frontier = _wordRepo.GetFrontier(_projId).Result; - - // Ensure the new word has no audio files - Assert.That(frontier[0].Audio, Has.Count.EqualTo(0)); - - // Test the frontier - Assert.That(_wordRepo.GetFrontier(_projId).Result, Has.Count.EqualTo(1)); + // Ensure returned id is different + Assert.That(newId, Is.Not.Null); + Assert.That(newId, Is.Not.EqualTo(oldId)); // Ensure the word with deleted audio is in the frontier + var frontier = _wordRepo.GetFrontier(_projId).Result; Assert.That(frontier, Has.Count.EqualTo(1)); - Assert.That(frontier[0].Id, Is.Not.EqualTo(wordId)); + Assert.That(frontier[0].Id, Is.EqualTo(newId)); Assert.That(frontier[0].Audio, Has.Count.EqualTo(0)); - Assert.That(frontier[0].History, Has.Count.EqualTo(1)); } } } diff --git a/Backend.Tests/Services/WordServiceTests.cs b/Backend.Tests/Services/WordServiceTests.cs index 6c27655579..d068a48179 100644 --- a/Backend.Tests/Services/WordServiceTests.cs +++ b/Backend.Tests/Services/WordServiceTests.cs @@ -72,11 +72,28 @@ public void TestDeleteAudio() var fileName = "audio.mp3"; var wordInFrontier = _wordRepo.Create( new Word() { Audio = [new() { FileName = fileName }], ProjectId = ProjId }).Result; - var result = _wordService.DeleteAudio(ProjId, UserId, wordInFrontier.Id, fileName).Result; - Assert.That(result!.EditedBy.Last(), Is.EqualTo(UserId)); - Assert.That(result!.History.Last(), Is.EqualTo(wordInFrontier.Id)); - Assert.That(_wordRepo.IsInFrontier(ProjId, result.Id).Result, Is.True); - Assert.That(_wordRepo.IsInFrontier(ProjId, wordInFrontier.Id).Result, Is.False); + var oldId = wordInFrontier.Id; + + var newWord = _wordService.DeleteAudio(ProjId, UserId, oldId, fileName).Result; + + // New word is correct + Assert.That(newWord, Is.Not.Null); + Assert.That(newWord!.Id, Is.Not.EqualTo(oldId)); + Assert.That(newWord!.EditedBy.Last(), Is.EqualTo(UserId)); + Assert.That(newWord!.History.Last(), Is.EqualTo(oldId)); + + // New word is only one in frontier + Assert.That(_wordRepo.IsInFrontier(ProjId, newWord.Id).Result, Is.True); + Assert.That(_wordRepo.GetFrontier(ProjId).Result, Has.Count.EqualTo(1)); + + // Original word persists + var allWords = _wordRepo.GetAllWords(ProjId).Result; + Assert.That(allWords, Has.Count.EqualTo(2)); + Assert.That(allWords.Find(w => w.Id == newWord.Id), Is.Not.Null); + var oldWord = allWords.Find(w => w.Id == oldId); + Assert.That(oldWord, Is.Not.Null); + Assert.That(oldWord!.Audio, Has.Count.EqualTo(1)); + Assert.That(oldWord!.History, Has.Count.EqualTo(0)); } [Test] From bf369edad791f7c749de2934549224e22a3eec7f Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Mon, 16 Feb 2026 16:40:50 -0500 Subject: [PATCH 2/8] Use consistent casting --- Backend.Tests/Controllers/AudioControllerTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Backend.Tests/Controllers/AudioControllerTests.cs b/Backend.Tests/Controllers/AudioControllerTests.cs index e8e088c55a..552a1e641e 100644 --- a/Backend.Tests/Controllers/AudioControllerTests.cs +++ b/Backend.Tests/Controllers/AudioControllerTests.cs @@ -180,11 +180,11 @@ public void TestDeleteAudioFile() var oldId = _wordRepo.Create(origWord).Result.Id; // Test delete function - var result = _audioController.DeleteAudioFile(_projId, oldId, fileName).Result as OkObjectResult; - var newId = result?.Value as string; + var result = _audioController.DeleteAudioFile(_projId, oldId, fileName).Result; + Assert.That(result, Is.TypeOf()); // Ensure returned id is different - Assert.That(newId, Is.Not.Null); + var newId = (string)((OkObjectResult)result)!.Value!; Assert.That(newId, Is.Not.EqualTo(oldId)); // Ensure the word with deleted audio is in the frontier From bbce10f2be5a563e69cb2c22d365737d64bb9409 Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Tue, 17 Feb 2026 15:38:09 -0500 Subject: [PATCH 3/8] Remove unnecessary !s --- Backend.Tests/Services/WordServiceTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Backend.Tests/Services/WordServiceTests.cs b/Backend.Tests/Services/WordServiceTests.cs index b1a89eeda1..3e88278551 100644 --- a/Backend.Tests/Services/WordServiceTests.cs +++ b/Backend.Tests/Services/WordServiceTests.cs @@ -79,8 +79,8 @@ public void TestDeleteAudio() // New word is correct Assert.That(newWord, Is.Not.Null); Assert.That(newWord!.Id, Is.Not.EqualTo(oldId)); - Assert.That(newWord!.EditedBy.Last(), Is.EqualTo(UserId)); - Assert.That(newWord!.History.Last(), Is.EqualTo(oldId)); + Assert.That(newWord.EditedBy.Last(), Is.EqualTo(UserId)); + Assert.That(newWord.History.Last(), Is.EqualTo(oldId)); // New word is only one in frontier Assert.That(_wordRepo.IsInFrontier(ProjId, newWord.Id).Result, Is.True); @@ -93,7 +93,7 @@ public void TestDeleteAudio() var oldWord = allWords.Find(w => w.Id == oldId); Assert.That(oldWord, Is.Not.Null); Assert.That(oldWord!.Audio, Has.Count.EqualTo(1)); - Assert.That(oldWord!.History, Has.Count.EqualTo(0)); + Assert.That(oldWord.History, Has.Count.EqualTo(0)); } [Test] From 490327e8263db56ca8f1ea6ac1d90eaf273a5d6f Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Wed, 18 Feb 2026 13:53:15 -0500 Subject: [PATCH 4/8] Tidy --- .../Controllers/AudioControllerTests.cs | 11 +++++++--- Backend.Tests/Services/WordServiceTests.cs | 22 ++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/Backend.Tests/Controllers/AudioControllerTests.cs b/Backend.Tests/Controllers/AudioControllerTests.cs index 552a1e641e..d6a90b5423 100644 --- a/Backend.Tests/Controllers/AudioControllerTests.cs +++ b/Backend.Tests/Controllers/AudioControllerTests.cs @@ -112,11 +112,14 @@ public void TestUploadAudioFile() { var result = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", _file).Result; Assert.That(result, Is.TypeOf()); - var newId = (string)((OkObjectResult)result)!.Value!; + var okResult = (OkObjectResult)result; + Assert.That(okResult.Value, Is.TypeOf()); + var newId = (string)okResult.Value; Assert.That(newId, Is.Not.EqualTo(_wordId)); var foundWord = _wordRepo.GetWord(_projId, newId).Result; - Assert.That(foundWord?.Audio, Is.Not.Null); + Assert.That(foundWord, Is.Not.Null); + Assert.That(foundWord.Audio, Is.Not.Null); } [Test] @@ -182,9 +185,11 @@ public void TestDeleteAudioFile() // Test delete function var result = _audioController.DeleteAudioFile(_projId, oldId, fileName).Result; Assert.That(result, Is.TypeOf()); + var okResult = (OkObjectResult)result; + Assert.That(okResult.Value, Is.TypeOf()); // Ensure returned id is different - var newId = (string)((OkObjectResult)result)!.Value!; + var newId = (string)okResult.Value; Assert.That(newId, Is.Not.EqualTo(oldId)); // Ensure the word with deleted audio is in the frontier diff --git a/Backend.Tests/Services/WordServiceTests.cs b/Backend.Tests/Services/WordServiceTests.cs index 3e88278551..45660c1183 100644 --- a/Backend.Tests/Services/WordServiceTests.cs +++ b/Backend.Tests/Services/WordServiceTests.cs @@ -41,7 +41,7 @@ public void TestCreateDoesNotAddDuplicateUserId() [Test] public void TestCreateMultipleWords() { - _ = _wordService.Create(UserId, [new() { ProjectId = ProjId }, new() { ProjectId = ProjId }]).Result; + _wordService.Create(UserId, [new() { ProjectId = ProjId }, new() { ProjectId = ProjId }]).Wait(); Assert.That(_wordRepo.GetAllWords(ProjId).Result, Has.Count.EqualTo(2)); Assert.That(_wordRepo.GetAllFrontier(ProjId).Result, Has.Count.EqualTo(2)); } @@ -78,7 +78,7 @@ public void TestDeleteAudio() // New word is correct Assert.That(newWord, Is.Not.Null); - Assert.That(newWord!.Id, Is.Not.EqualTo(oldId)); + Assert.That(newWord.Id, Is.Not.EqualTo(oldId)); Assert.That(newWord.EditedBy.Last(), Is.EqualTo(UserId)); Assert.That(newWord.History.Last(), Is.EqualTo(oldId)); @@ -92,7 +92,7 @@ public void TestDeleteAudio() Assert.That(allWords.Find(w => w.Id == newWord.Id), Is.Not.Null); var oldWord = allWords.Find(w => w.Id == oldId); Assert.That(oldWord, Is.Not.Null); - Assert.That(oldWord!.Audio, Has.Count.EqualTo(1)); + Assert.That(oldWord.Audio, Has.Count.EqualTo(1)); Assert.That(oldWord.History, Has.Count.EqualTo(0)); } @@ -109,7 +109,11 @@ public void TestUpdateReplacesFrontierWord() Assert.That(word, Is.Not.Null); var oldId = word.Id; word.Vernacular = "NewVern"; - Assert.That(_wordService.Update(UserId, word).Result!.Guid, Is.EqualTo(word.Guid)); + + var updatedWord = _wordService.Update(UserId, word).Result; + Assert.That(updatedWord, Is.Not.Null); + Assert.That(updatedWord.Guid, Is.EqualTo(word.Guid)); + var frontier = _wordRepo.GetAllFrontier(ProjId).Result; Assert.That(frontier, Has.Count.EqualTo(1)); var newWord = frontier.First(); @@ -128,12 +132,14 @@ public void TestUpdateUsingCitationForm() // Update something other than Vernacular and make sure UsingCitationForm is still true. word.Note = new() { Text = "change word's note" }; var nonVernUpdate = _wordService.Update(UserId, word).Result; - Assert.That(nonVernUpdate!.UsingCitationForm, Is.True); + Assert.That(nonVernUpdate, Is.Not.Null); + Assert.That(nonVernUpdate.UsingCitationForm, Is.True); // Update the Vernacular and make sure UsingCitationForm is false. nonVernUpdate.Vernacular = "change word's vernacular form"; var vernUpdate = _wordService.Update(UserId, nonVernUpdate).Result; - Assert.That(vernUpdate!.UsingCitationForm, Is.False); + Assert.That(vernUpdate, Is.Not.Null); + Assert.That(vernUpdate.UsingCitationForm, Is.False); } [Test] @@ -178,9 +184,9 @@ public void TestFindContainingWordNoFrontier() public void TestFindContainingWordNewVern() { var oldWordSameProj = Util.RandomWord(ProjId); - _ = _wordRepo.Create(oldWordSameProj).Result; + _wordRepo.Create(oldWordSameProj).Wait(); var oldWordDiffProj = Util.RandomWord("different"); - _ = _wordRepo.Create(oldWordDiffProj).Result; + _wordRepo.Create(oldWordDiffProj).Wait(); var newWord = Util.RandomWord(ProjId); newWord.Vernacular = oldWordDiffProj.Vernacular; newWord.Senses = oldWordDiffProj.Senses.Select(s => s.Clone()).ToList(); From ff9f7bafda35e03276e90941a2ad24a9bc63a15b Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Wed, 18 Feb 2026 15:26:15 -0500 Subject: [PATCH 5/8] Satisfy dotnet format --- .../Controllers/AudioControllerTests.cs | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/Backend.Tests/Controllers/AudioControllerTests.cs b/Backend.Tests/Controllers/AudioControllerTests.cs index d6a90b5423..bd7e480334 100644 --- a/Backend.Tests/Controllers/AudioControllerTests.cs +++ b/Backend.Tests/Controllers/AudioControllerTests.cs @@ -52,10 +52,10 @@ public void TestUploadAudioFileUnauthorized() _audioController.ControllerContext.HttpContext = PermissionServiceMock.UnauthorizedHttpContext(); var result = _audioController.UploadAudioFile(_projId, _wordId, _file).Result; - Assert.That(result, Is.InstanceOf()); + Assert.That(result, Is.TypeOf()); result = _audioController.UploadAudioFile(_projId, _wordId, "", _file).Result; - Assert.That(result, Is.InstanceOf()); + Assert.That(result, Is.TypeOf()); } [Test] @@ -78,10 +78,10 @@ public void TestUploadAudioFileInvalidArguments() public void TestUploadAudioFileNullFile() { var result = _audioController.UploadAudioFile(_projId, _wordId, null).Result; - Assert.That(result, Is.InstanceOf()); + Assert.That(result, Is.TypeOf()); result = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", null).Result; - Assert.That(result, Is.InstanceOf()); + Assert.That(result, Is.TypeOf()); } [Test] @@ -91,35 +91,35 @@ public void TestUploadAudioFileEmptyFile() _file = new FormFile(_stream, 0, 0, "Name", FileName); var result = _audioController.UploadAudioFile(_projId, _wordId, _file).Result; - Assert.That(result, Is.InstanceOf()); + Assert.That(result, Is.TypeOf()); result = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", _file).Result; - Assert.That(result, Is.InstanceOf()); + Assert.That(result, Is.TypeOf()); } [Test] public void TestUploadAudioFileNoWord() { var result = _audioController.UploadAudioFile(_projId, "not-a-word", _file).Result; - Assert.That(result, Is.InstanceOf()); + Assert.That(result, Is.TypeOf()); result = _audioController.UploadAudioFile(_projId, "not-a-word", "speakerId", _file).Result; - Assert.That(result, Is.InstanceOf()); + Assert.That(result, Is.TypeOf()); } [Test] public void TestUploadAudioFile() { - var result = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", _file).Result; - Assert.That(result, Is.TypeOf()); - var okResult = (OkObjectResult)result; - Assert.That(okResult.Value, Is.TypeOf()); - var newId = (string)okResult.Value; + var result = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", _file).Result + as OkObjectResult; + Assert.That(result, Is.Not.Null); + var newId = result.Value as string; + Assert.That(newId, Is.Not.Null); Assert.That(newId, Is.Not.EqualTo(_wordId)); var foundWord = _wordRepo.GetWord(_projId, newId).Result; Assert.That(foundWord, Is.Not.Null); - Assert.That(foundWord.Audio, Is.Not.Null); + Assert.That(foundWord.Audio, Is.Not.Empty); } [Test] @@ -175,21 +175,20 @@ public void TestDeleteAudioFileNoWordWithAudio() public void TestDeleteAudioFile() { // Refill test database - _wordRepo.DeleteAllWords(_projId); - _wordRepo.DeleteAllFrontierWords(_projId); + _wordRepo.DeleteAllWords(_projId).Wait(); + _wordRepo.DeleteAllFrontierWords(_projId).Wait(); var origWord = Util.RandomWord(_projId); const string fileName = "a.wav"; origWord.Audio.Add(new Pronunciation(fileName)); var oldId = _wordRepo.Create(origWord).Result.Id; // Test delete function - var result = _audioController.DeleteAudioFile(_projId, oldId, fileName).Result; - Assert.That(result, Is.TypeOf()); - var okResult = (OkObjectResult)result; - Assert.That(okResult.Value, Is.TypeOf()); + var result = _audioController.DeleteAudioFile(_projId, oldId, fileName).Result as OkObjectResult; + Assert.That(result, Is.Not.Null); + var newId = result.Value as string; // Ensure returned id is different - var newId = (string)okResult.Value; + Assert.That(newId, Is.Not.Null); Assert.That(newId, Is.Not.EqualTo(oldId)); // Ensure the word with deleted audio is in the frontier From 8cfb0e5e96391c8a31ab7098f039733bad42875b Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Thu, 19 Feb 2026 15:15:08 -0500 Subject: [PATCH 6/8] Prefer Is.InstanceOf over Is.TypeOf --- .../Controllers/AudioControllerTests.cs | 42 +++++++++---------- Backend.Tests/Services/WordServiceTests.cs | 13 ++++-- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/Backend.Tests/Controllers/AudioControllerTests.cs b/Backend.Tests/Controllers/AudioControllerTests.cs index bd7e480334..c4b862b530 100644 --- a/Backend.Tests/Controllers/AudioControllerTests.cs +++ b/Backend.Tests/Controllers/AudioControllerTests.cs @@ -52,36 +52,36 @@ public void TestUploadAudioFileUnauthorized() _audioController.ControllerContext.HttpContext = PermissionServiceMock.UnauthorizedHttpContext(); var result = _audioController.UploadAudioFile(_projId, _wordId, _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.UploadAudioFile(_projId, _wordId, "", _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] public void TestUploadAudioFileInvalidArguments() { var result = _audioController.UploadAudioFile("invalid/projId", _wordId, _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.UploadAudioFile(_projId, "invalid/wordId", _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.UploadAudioFile("invalid/projId", _wordId, "speakerId", _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.UploadAudioFile(_projId, "invalid/wordId", "speakerId", _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] public void TestUploadAudioFileNullFile() { var result = _audioController.UploadAudioFile(_projId, _wordId, null).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", null).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] @@ -91,20 +91,20 @@ public void TestUploadAudioFileEmptyFile() _file = new FormFile(_stream, 0, 0, "Name", FileName); var result = _audioController.UploadAudioFile(_projId, _wordId, _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.UploadAudioFile(_projId, _wordId, "speakerId", _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] public void TestUploadAudioFileNoWord() { var result = _audioController.UploadAudioFile(_projId, "not-a-word", _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.UploadAudioFile(_projId, "not-a-word", "speakerId", _file).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] @@ -126,17 +126,17 @@ public void TestUploadAudioFile() public void TestDownloadAudioFileInvalidArguments() { var result = _audioController.DownloadAudioFile("invalid/projId", "fileName"); - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.DownloadAudioFile("projId", "invalid/fileName"); - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] public void TestDownloadAudioFileNoFile() { var result = _audioController.DownloadAudioFile("projId", "fileName"); - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] @@ -144,31 +144,31 @@ public void TestDeleteAudioFileUnauthorized() { _audioController.ControllerContext.HttpContext = PermissionServiceMock.UnauthorizedHttpContext(); var result = _audioController.DeleteAudioFile(_projId, _wordId, _file.FileName).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] public void TestDeleteAudioFileInvalidArguments() { var result = _audioController.DeleteAudioFile("in/va/lid", _wordId, _file.FileName).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.DeleteAudioFile(_projId, "in/va/lid", _file.FileName).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); result = _audioController.DeleteAudioFile(_projId, _wordId, "in/va/lid").Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] public void TestDeleteAudioFileNoWordWithAudio() { var result = _audioController.DeleteAudioFile(_projId, "not-a-word", _file.FileName).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); var wordId = _wordRepo.Create(Util.RandomWord(_projId)).Result.Id; result = _audioController.DeleteAudioFile(_projId, wordId, _file.FileName).Result; - Assert.That(result, Is.TypeOf()); + Assert.That(result, Is.InstanceOf()); } [Test] diff --git a/Backend.Tests/Services/WordServiceTests.cs b/Backend.Tests/Services/WordServiceTests.cs index 45660c1183..5a3e877acc 100644 --- a/Backend.Tests/Services/WordServiceTests.cs +++ b/Backend.Tests/Services/WordServiceTests.cs @@ -146,7 +146,9 @@ public void TestUpdateUsingCitationForm() public void TestRestoreFrontierWordsMissingWordFalse() { var word = _wordRepo.Add(new Word { ProjectId = ProjId }).Result; - Assert.That(_wordService.RestoreFrontierWords(ProjId, ["NotAnId", word.Id]).Result, Is.False); + + var restored = _wordService.RestoreFrontierWords(ProjId, ["NotAnId", word.Id]).Result; + Assert.That(restored, Is.False); } [Test] @@ -155,8 +157,9 @@ public void TestRestoreFrontierWordsFrontierWordFalse() var wordNoFrontier = _wordRepo.Add(new Word { ProjectId = ProjId }).Result; var wordYesFrontier = _wordRepo.Create(new Word { ProjectId = ProjId }).Result; Assert.That(_wordRepo.GetAllFrontier(ProjId).Result, Has.Count.EqualTo(1)); - Assert.That( - _wordService.RestoreFrontierWords(ProjId, [wordNoFrontier.Id, wordYesFrontier.Id]).Result, Is.False); + + var restored = _wordService.RestoreFrontierWords(ProjId, [wordNoFrontier.Id, wordYesFrontier.Id]).Result; + Assert.That(restored, Is.False); } [Test] @@ -165,7 +168,9 @@ public void TestRestoreFrontierWordsTrue() var word1 = _wordRepo.Add(new Word { ProjectId = ProjId }).Result; var word2 = _wordRepo.Add(new Word { ProjectId = ProjId }).Result; Assert.That(_wordRepo.GetAllFrontier(ProjId).Result, Is.Empty); - Assert.That(_wordService.RestoreFrontierWords(ProjId, [word1.Id, word2.Id]).Result, Is.True); + + var restored = _wordService.RestoreFrontierWords(ProjId, [word1.Id, word2.Id]).Result; + Assert.That(restored, Is.True); Assert.That(_wordRepo.GetAllFrontier(ProjId).Result, Has.Count.EqualTo(2)); } From 3334b82f269acc13c57ac09b523b8b23cd1ef10e Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Thu, 19 Feb 2026 15:48:25 -0500 Subject: [PATCH 7/8] Use Is.Empty --- Backend.Tests/Controllers/AudioControllerTests.cs | 2 +- Backend.Tests/Services/WordServiceTests.cs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Backend.Tests/Controllers/AudioControllerTests.cs b/Backend.Tests/Controllers/AudioControllerTests.cs index c4b862b530..e2bb8978b7 100644 --- a/Backend.Tests/Controllers/AudioControllerTests.cs +++ b/Backend.Tests/Controllers/AudioControllerTests.cs @@ -195,7 +195,7 @@ public void TestDeleteAudioFile() var frontier = _wordRepo.GetAllFrontier(_projId).Result; Assert.That(frontier, Has.Count.EqualTo(1)); Assert.That(frontier[0].Id, Is.EqualTo(newId)); - Assert.That(frontier[0].Audio, Has.Count.EqualTo(0)); + Assert.That(frontier[0].Audio, Is.Empty); } } } diff --git a/Backend.Tests/Services/WordServiceTests.cs b/Backend.Tests/Services/WordServiceTests.cs index 5a3e877acc..48156ff6ed 100644 --- a/Backend.Tests/Services/WordServiceTests.cs +++ b/Backend.Tests/Services/WordServiceTests.cs @@ -79,6 +79,7 @@ public void TestDeleteAudio() // New word is correct Assert.That(newWord, Is.Not.Null); Assert.That(newWord.Id, Is.Not.EqualTo(oldId)); + Assert.That(newWord.Audio, Is.Empty); Assert.That(newWord.EditedBy.Last(), Is.EqualTo(UserId)); Assert.That(newWord.History.Last(), Is.EqualTo(oldId)); @@ -93,7 +94,7 @@ public void TestDeleteAudio() var oldWord = allWords.Find(w => w.Id == oldId); Assert.That(oldWord, Is.Not.Null); Assert.That(oldWord.Audio, Has.Count.EqualTo(1)); - Assert.That(oldWord.History, Has.Count.EqualTo(0)); + Assert.That(oldWord.History, Is.Empty); } [Test] From 2d810f5e696d1965d474ee2b1cae8b91cc2820bf Mon Sep 17 00:00:00 2001 From: Danny Rorabaugh Date: Fri, 20 Feb 2026 14:14:26 -0500 Subject: [PATCH 8/8] Add verb to test method names --- Backend.Tests/Services/WordServiceTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Backend.Tests/Services/WordServiceTests.cs b/Backend.Tests/Services/WordServiceTests.cs index 48156ff6ed..2d5c9c9cd1 100644 --- a/Backend.Tests/Services/WordServiceTests.cs +++ b/Backend.Tests/Services/WordServiceTests.cs @@ -47,7 +47,7 @@ public void TestCreateMultipleWords() } [Test] - public void TestDeleteAudioBadInputNull() + public void TestDeleteAudioBadInputReturnsNull() { var fileName = "audio.mp3"; var wordInFrontier = _wordRepo.Create( @@ -58,7 +58,7 @@ public void TestDeleteAudioBadInputNull() } [Test] - public void TestDeleteAudioNotInFrontierNull() + public void TestDeleteAudioNotInFrontierReturnsNull() { var fileName = "audio.mp3"; var wordNotInFrontier = _wordRepo.Add( @@ -98,7 +98,7 @@ public void TestDeleteAudio() } [Test] - public void TestUpdateNotInFrontierNull() + public void TestUpdateNotInFrontierReturnsNull() { Assert.That(_wordService.Update(UserId, new Word() { Id = WordId, ProjectId = ProjId }).Result, Is.Null); }