diff --git a/test/ClinicalScheduler/ClinicalSchedulerTestBase.cs b/test/ClinicalScheduler/ClinicalSchedulerTestBase.cs index 9040a39fd..3c9bafffa 100644 --- a/test/ClinicalScheduler/ClinicalSchedulerTestBase.cs +++ b/test/ClinicalScheduler/ClinicalSchedulerTestBase.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore; using MockQueryable.NSubstitute; using NSubstitute; +using NSubstitute.ReturnsExtensions; using Viper.Areas.ClinicalScheduler.Services; using Viper.Classes.SQLContext; using Viper.Models.ClinicalScheduler; @@ -227,7 +228,7 @@ protected void SetupUserWithoutManagePermission(string userMothraId = TestUserMo /// protected void SetupNullUser() { - MockUserHelper.GetCurrentUser().Returns((AaudUser?)null); + MockUserHelper.GetCurrentUser().ReturnsNull(); } /// @@ -239,7 +240,7 @@ protected void SetupUserWithPermissions(string? userMothraId, IEnumerable protected void SetupNullUser() { - MockUserHelper.GetCurrentUser().Returns((AaudUser?)null); + MockUserHelper.GetCurrentUser().ReturnsNull(); } public void Dispose() diff --git a/test/Effort/CourseRelationshipsControllerTests.cs b/test/Effort/CourseRelationshipsControllerTests.cs index db9e26fec..281668ea6 100644 --- a/test/Effort/CourseRelationshipsControllerTests.cs +++ b/test/Effort/CourseRelationshipsControllerTests.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.Logging; using NSubstitute; using NSubstitute.ExceptionExtensions; +using NSubstitute.ReturnsExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Requests; using Viper.Areas.Effort.Models.DTOs.Responses; @@ -102,7 +103,7 @@ public async Task GetRelationships_ReturnsOk_WithRelationships() public async Task GetRelationships_ReturnsNotFound_WhenCourseNotFound() { // Arrange - _courseServiceMock.GetCourseAsync(999, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(999, Arg.Any()).ReturnsNull(); // Act var actionResult = await _controller.GetRelationships(999); @@ -439,7 +440,7 @@ public async Task DeleteRelationship_ReturnsNoContent_OnSuccess() public async Task DeleteRelationship_ReturnsNotFound_WhenRelationshipNotFound() { // Arrange - _relationshipServiceMock.GetRelationshipAsync(999, Arg.Any()).Returns((CourseRelationshipDto?)null); + _relationshipServiceMock.GetRelationshipAsync(999, Arg.Any()).ReturnsNull(); // Act var actionResult = await _controller.DeleteRelationship(1, 999); diff --git a/test/Effort/CoursesControllerTests.cs b/test/Effort/CoursesControllerTests.cs index cc8149447..07df82ec9 100644 --- a/test/Effort/CoursesControllerTests.cs +++ b/test/Effort/CoursesControllerTests.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using NSubstitute.ExceptionExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Requests; @@ -149,7 +150,7 @@ public async Task GetCourse_ReturnsOk_WhenCourseExists() public async Task GetCourse_ReturnsNotFound_WhenCourseDoesNotExist() { // Arrange - _courseServiceMock.GetCourseAsync(999, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetCourse(999); @@ -402,7 +403,7 @@ public async Task UpdateCourse_ReturnsNotFound_WhenCourseDoesNotExist() CustDept = "VME" }; - _courseServiceMock.GetCourseAsync(999, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.UpdateCourse(999, request); @@ -493,7 +494,7 @@ public async Task UpdateCourseEnrollment_ReturnsNotFound_WhenCourseDoesNotExist( // Arrange var request = new UpdateEnrollmentRequest { Enrollment = 50 }; - _courseServiceMock.GetCourseAsync(999, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.UpdateCourseEnrollment(999, request); @@ -546,7 +547,7 @@ public async Task DeleteCourse_ReturnsNoContent_OnSuccess() public async Task DeleteCourse_ReturnsNotFound_WhenCourseDoesNotExist() { // Arrange - _courseServiceMock.GetCourseAsync(999, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.DeleteCourse(999); @@ -712,7 +713,7 @@ public async Task ImportCourse_ReturnsNotFound_WhenBannerCourseNotFound() Crn = "99999" }; - _courseServiceMock.GetBannerCourseAsync(202410, "99999", Arg.Any()).Returns((BannerCourseDto?)null); + _courseServiceMock.GetBannerCourseAsync(202410, "99999", Arg.Any()).ReturnsNull(); // Act var result = await _controller.ImportCourse(request); @@ -852,7 +853,7 @@ public async Task GetCourseEffort_ReturnsCanAddEffortFalse_WhenTermNotEditable() public async Task GetCourseEffort_ReturnsNotFound_WhenCourseNotFound() { // Arrange - _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetCourseEffort(TestCourseId); @@ -940,7 +941,7 @@ public async Task GetPossibleInstructors_ReturnsOk_WhenAuthorized() public async Task GetPossibleInstructors_ReturnsNotFound_WhenCourseNotFound() { // Arrange - _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetPossibleInstructors(TestCourseId); @@ -995,7 +996,7 @@ public async Task GetCourseEvaluations_ReturnsOk_WhenAuthorized() public async Task GetCourseEvaluations_ReturnsNotFound_WhenCourseNotFound() { // Arrange - _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetCourseEvaluations(TestCourseId); @@ -1090,7 +1091,7 @@ await _evalHarvestServiceMock.Received(1).CreateAdHocEvaluationAsync( public async Task CreateEvaluation_ReturnsNotFound_WhenCourseNotFound() { // Arrange - _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).ReturnsNull(); var request = new CreateAdHocEvalRequest { @@ -1201,7 +1202,7 @@ public async Task UpdateEvaluation_ReturnsOk_WhenSuccessful() public async Task UpdateEvaluation_ReturnsNotFound_WhenCourseNotFound() { // Arrange - _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).ReturnsNull(); var request = new UpdateAdHocEvalRequest { @@ -1294,7 +1295,7 @@ public async Task DeleteEvaluation_ReturnsNoContent_WhenSuccessful() public async Task DeleteEvaluation_ReturnsNotFound_WhenCourseNotFound() { // Arrange - _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).Returns((CourseDto?)null); + _courseServiceMock.GetCourseAsync(TestCourseId, Arg.Any()).ReturnsNull(); // Act var result = await _controller.DeleteEvaluation(TestCourseId, TestQuantId); diff --git a/test/Effort/EffortIntegrationTestBase.cs b/test/Effort/EffortIntegrationTestBase.cs index 8d5e3687a..0f544841f 100644 --- a/test/Effort/EffortIntegrationTestBase.cs +++ b/test/Effort/EffortIntegrationTestBase.cs @@ -5,6 +5,7 @@ using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; using NSubstitute; +using NSubstitute.ReturnsExtensions; using Viper.Areas.Effort; using Viper.Areas.Effort.Constants; using Viper.Areas.Effort.Models.Entities; @@ -339,7 +340,7 @@ protected void SetupUserWithNoPermissions() /// protected void SetupNullUser() { - MockUserHelper.GetCurrentUser().Returns((AaudUser?)null); + MockUserHelper.GetCurrentUser().ReturnsNull(); } /// @@ -349,7 +350,7 @@ protected void SetupUserWithPermissionsForIntegration(string? userMothraId, IEnu { if (userMothraId == null) { - MockUserHelper.GetCurrentUser().Returns((AaudUser?)null); + MockUserHelper.GetCurrentUser().ReturnsNull(); return; } diff --git a/test/Effort/EffortRecordsControllerTests.cs b/test/Effort/EffortRecordsControllerTests.cs index 30d582eff..d57a546e8 100644 --- a/test/Effort/EffortRecordsControllerTests.cs +++ b/test/Effort/EffortRecordsControllerTests.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using NSubstitute.ExceptionExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Exceptions; @@ -100,7 +101,7 @@ public async Task GetRecord_ReturnsOk_WhenRecordExistsAndAuthorized() public async Task GetRecord_ReturnsNotFound_WhenRecordDoesNotExist() { // Arrange - _recordServiceMock.GetEffortRecordAsync(999, Arg.Any()).Returns((InstructorEffortRecordDto?)null); + _recordServiceMock.GetEffortRecordAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetRecord(999); @@ -270,7 +271,7 @@ public async Task UpdateRecord_ReturnsNotFound_WhenRecordDoesNotExist() EffortValue = 30 }; - _recordServiceMock.GetEffortRecordAsync(999, Arg.Any()).Returns((InstructorEffortRecordDto?)null); + _recordServiceMock.GetEffortRecordAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.UpdateRecord(999, request); @@ -353,7 +354,7 @@ public async Task DeleteRecord_ReturnsNoContent_WhenSuccessful() public async Task DeleteRecord_ReturnsNotFound_WhenRecordDoesNotExist() { // Arrange - _recordServiceMock.GetEffortRecordAsync(999, Arg.Any()).Returns((InstructorEffortRecordDto?)null); + _recordServiceMock.GetEffortRecordAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.DeleteRecord(999, null); diff --git a/test/Effort/EffortTypesControllerTests.cs b/test/Effort/EffortTypesControllerTests.cs index a243f3156..20dac1a24 100644 --- a/test/Effort/EffortTypesControllerTests.cs +++ b/test/Effort/EffortTypesControllerTests.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using NSubstitute.ExceptionExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Requests; @@ -111,7 +112,7 @@ public async Task GetEffortType_ReturnsOk_WhenFound() public async Task GetEffortType_ReturnsNotFound_WhenMissing() { // Arrange - _effortTypeServiceMock.GetEffortTypeAsync("XXX", Arg.Any()).Returns((EffortTypeDto?)null); + _effortTypeServiceMock.GetEffortTypeAsync("XXX", Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetEffortType("XXX", CancellationToken.None); @@ -217,7 +218,7 @@ public async Task UpdateEffortType_ReturnsNotFound_WhenMissing() AllowedOn199299 = false, AllowedOnRCourses = false }; - _effortTypeServiceMock.UpdateEffortTypeAsync("XXX", request, Arg.Any()).Returns((EffortTypeDto?)null); + _effortTypeServiceMock.UpdateEffortTypeAsync("XXX", request, Arg.Any()).ReturnsNull(); // Act var result = await _controller.UpdateEffortType("XXX", request, CancellationToken.None); @@ -297,7 +298,7 @@ public async Task DeleteEffortType_ReturnsNoContent_OnSuccess() public async Task DeleteEffortType_ReturnsNotFound_WhenMissing() { // Arrange - _effortTypeServiceMock.GetEffortTypeAsync("XXX", Arg.Any()).Returns((EffortTypeDto?)null); + _effortTypeServiceMock.GetEffortTypeAsync("XXX", Arg.Any()).ReturnsNull(); // Act var result = await _controller.DeleteEffortType("XXX", CancellationToken.None); @@ -397,7 +398,7 @@ public async Task CanDeleteEffortType_ReturnsCanDeleteTrue_WhenZeroUsage() public async Task CanDeleteEffortType_ReturnsNotFound_WhenMissing() { // Arrange - _effortTypeServiceMock.GetEffortTypeAsync("XXX", Arg.Any()).Returns((EffortTypeDto?)null); + _effortTypeServiceMock.GetEffortTypeAsync("XXX", Arg.Any()).ReturnsNull(); // Act var result = await _controller.CanDeleteEffortType("XXX", CancellationToken.None); diff --git a/test/Effort/InstructorsControllerTests.cs b/test/Effort/InstructorsControllerTests.cs index 12686a483..39a5d0a31 100644 --- a/test/Effort/InstructorsControllerTests.cs +++ b/test/Effort/InstructorsControllerTests.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using NSubstitute.ExceptionExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Requests; @@ -132,7 +133,7 @@ public async Task GetInstructor_ReturnsOk_WhenInstructorExists() public async Task GetInstructor_ReturnsNotFound_WhenInstructorDoesNotExist() { // Arrange - _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).Returns((PersonDto?)null); + _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetInstructor(999, 202410); @@ -318,7 +319,7 @@ public async Task UpdateInstructor_ReturnsNotFound_WhenInstructorDoesNotExist() VolunteerWos = false }; - _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).Returns((PersonDto?)null); + _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).ReturnsNull(); // Act var result = await _controller.UpdateInstructor(999, 202410, request); @@ -377,7 +378,7 @@ public async Task DeleteInstructor_ReturnsNoContent_OnSuccess() public async Task DeleteInstructor_ReturnsNotFound_WhenInstructorDoesNotExist() { // Arrange - _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).Returns((PersonDto?)null); + _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).ReturnsNull(); // Act var result = await _controller.DeleteInstructor(999, 202410); @@ -529,7 +530,7 @@ public async Task GetInstructorEffortRecords_ReturnsOk_WithEffortRecords() public async Task GetInstructorEffortRecords_ReturnsNotFound_WhenInstructorDoesNotExist() { // Arrange - _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).Returns((PersonDto?)null); + _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetInstructorEffortRecords(999, 202410); diff --git a/test/Effort/PercentAssignTypesControllerTests.cs b/test/Effort/PercentAssignTypesControllerTests.cs index e66a8a4c7..a968186cb 100644 --- a/test/Effort/PercentAssignTypesControllerTests.cs +++ b/test/Effort/PercentAssignTypesControllerTests.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Responses; using Viper.Areas.Effort.Services; @@ -122,7 +123,7 @@ public async Task GetPercentAssignType_ReturnsOk_WhenFound() public async Task GetPercentAssignType_ReturnsNotFound_WhenMissing() { // Arrange - _typeServiceMock.GetPercentAssignTypeAsync(999, Arg.Any()).Returns((PercentAssignTypeDto?)null); + _typeServiceMock.GetPercentAssignTypeAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetPercentAssignType(999, CancellationToken.None); @@ -201,7 +202,7 @@ public async Task GetInstructorsByType_ReturnsOk_WithInstructors() public async Task GetInstructorsByType_ReturnsNotFound_WhenTypeMissing() { // Arrange - _typeServiceMock.GetInstructorsByTypeAsync(999, Arg.Any()).Returns((InstructorsByPercentAssignTypeResponseDto?)null); + _typeServiceMock.GetInstructorsByTypeAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetInstructorsByType(999, CancellationToken.None); diff --git a/test/Effort/PercentagesControllerTests.cs b/test/Effort/PercentagesControllerTests.cs index 21fd486c7..e88f87214 100644 --- a/test/Effort/PercentagesControllerTests.cs +++ b/test/Effort/PercentagesControllerTests.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using NSubstitute.ExceptionExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Requests; @@ -153,7 +154,7 @@ public async Task GetPercentage_ReturnsOk_WhenPercentageExistsAndAuthorized() public async Task GetPercentage_ReturnsNotFound_WhenPercentageDoesNotExist() { // Arrange - _percentageServiceMock.GetPercentageAsync(999, Arg.Any()).Returns((PercentageDto?)null); + _percentageServiceMock.GetPercentageAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetPercentage(999); @@ -398,7 +399,7 @@ public async Task UpdatePercentage_ReturnsNotFound_WhenPercentageDoesNotExist() // Arrange var request = CreateTestUpdateRequest(); - _percentageServiceMock.GetPercentageAsync(999, Arg.Any()).Returns((PercentageDto?)null); + _percentageServiceMock.GetPercentageAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.UpdatePercentage(999, request); @@ -525,7 +526,7 @@ public async Task DeletePercentage_ReturnsNoContent_WhenSuccessful() public async Task DeletePercentage_ReturnsNotFound_WhenPercentageDoesNotExist() { // Arrange - _percentageServiceMock.GetPercentageAsync(999, Arg.Any()).Returns((PercentageDto?)null); + _percentageServiceMock.GetPercentageAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.DeletePercentage(999); diff --git a/test/Effort/ReportsControllerTests.cs b/test/Effort/ReportsControllerTests.cs index 2d405335f..1e4d6b5a7 100644 --- a/test/Effort/ReportsControllerTests.cs +++ b/test/Effort/ReportsControllerTests.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Responses; using Viper.Areas.Effort.Services; @@ -2731,7 +2732,7 @@ public async Task GetSabbatical_NoRecord_ReturnsEmptyDto() { _permissionServiceMock.HasFullAccessAsync(Arg.Any()).Returns(true); _sabbaticalServiceMock - .GetByPersonIdAsync(456, Arg.Any()).Returns((SabbaticalDto?)null); + .GetByPersonIdAsync(456, Arg.Any()).ReturnsNull(); var result = await _controller.GetSabbatical(456); diff --git a/test/Effort/UnitsControllerTests.cs b/test/Effort/UnitsControllerTests.cs index 871bbb88c..9efbcc4f3 100644 --- a/test/Effort/UnitsControllerTests.cs +++ b/test/Effort/UnitsControllerTests.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using NSubstitute.ExceptionExtensions; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Requests; @@ -111,7 +112,7 @@ public async Task GetUnit_ReturnsOk_WhenFound() public async Task GetUnit_ReturnsNotFound_WhenMissing() { // Arrange - _unitServiceMock.GetUnitAsync(999, Arg.Any()).Returns((UnitDto?)null); + _unitServiceMock.GetUnitAsync(999, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetUnit(999, CancellationToken.None); @@ -199,7 +200,7 @@ public async Task UpdateUnit_ReturnsNotFound_WhenMissing() { // Arrange var request = new UpdateUnitRequest { Name = "Updated Unit", IsActive = true }; - _unitServiceMock.UpdateUnitAsync(999, request, Arg.Any()).Returns((UnitDto?)null); + _unitServiceMock.UpdateUnitAsync(999, request, Arg.Any()).ReturnsNull(); // Act var result = await _controller.UpdateUnit(999, request, CancellationToken.None); diff --git a/test/Effort/VerificationControllerTests.cs b/test/Effort/VerificationControllerTests.cs index 1703c1934..25ec01c21 100644 --- a/test/Effort/VerificationControllerTests.cs +++ b/test/Effort/VerificationControllerTests.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NSubstitute; +using NSubstitute.ReturnsExtensions; using Viper.Areas.Effort; using Viper.Areas.Effort.Controllers; using Viper.Areas.Effort.Models.DTOs.Requests; @@ -90,7 +91,7 @@ public async Task GetMyEffort_ReturnsOk_WithEffortData() public async Task GetMyEffort_ReturnsEmptyDto_WhenNoInstructorRecord() { // Arrange - _verificationServiceMock.GetMyEffortAsync(202410, Arg.Any()).Returns((MyEffortDto?)null); + _verificationServiceMock.GetMyEffortAsync(202410, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetMyEffort(202410); @@ -171,7 +172,7 @@ public async Task SendVerificationEmail_ReturnsNotFound_WhenInstructorNotFound() // Arrange var request = new SendVerificationEmailRequest { PersonId = 999, TermCode = 202410 }; - _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).Returns((PersonDto?)null); + _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).ReturnsNull(); // Act var result = await _controller.SendVerificationEmail(request); @@ -286,7 +287,7 @@ public async Task GetEmailHistory_ReturnsOk_WithHistory() public async Task GetEmailHistory_ReturnsNotFound_WhenInstructorNotFound() { // Arrange - _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).Returns((PersonDto?)null); + _instructorServiceMock.GetInstructorAsync(999, 202410, Arg.Any()).ReturnsNull(); // Act var result = await _controller.GetEmailHistory(999, 202410); @@ -360,7 +361,7 @@ public async Task CanVerify_ReturnsNotFound_WhenInstructorNotFound() { // Arrange _permissionServiceMock.GetCurrentPersonId().Returns(123); // Different person - _instructorServiceMock.GetInstructorAsync(456, 202410, Arg.Any()).Returns((PersonDto?)null); + _instructorServiceMock.GetInstructorAsync(456, 202410, Arg.Any()).ReturnsNull(); // Act var result = await _controller.CanVerify(456, 202410); diff --git a/test/Effort/VerificationServiceTests.cs b/test/Effort/VerificationServiceTests.cs index 2170c91f3..6f213b20e 100644 --- a/test/Effort/VerificationServiceTests.cs +++ b/test/Effort/VerificationServiceTests.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NSubstitute; +using NSubstitute.ReturnsExtensions; using Viper.Areas.Effort; using Viper.Areas.Effort.Constants; using Viper.Areas.Effort.EmailTemplates.Models; @@ -627,7 +628,7 @@ public async Task SendVerificationEmailAsync_ReturnsError_WhenInstructorNotFound public async Task SendVerificationEmailAsync_ReturnsError_WhenNoSenderEmail() { // Arrange: Current user has no email - _permissionServiceMock.GetCurrentUserEmail().Returns((string?)null); + _permissionServiceMock.GetCurrentUserEmail().ReturnsNull(); // Act var result = await _service.SendVerificationEmailAsync(TestPersonId, TestTermCode); diff --git a/test/RAPS/RolesTests.cs b/test/RAPS/RolesTests.cs index 88b722895..16222872b 100644 --- a/test/RAPS/RolesTests.cs +++ b/test/RAPS/RolesTests.cs @@ -2,6 +2,7 @@ using Viper.Classes.SQLContext; using Viper.Models.RAPS; using NSubstitute; +using NSubstitute.ReturnsExtensions; using MockQueryable.NSubstitute; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -55,7 +56,7 @@ private List GetTestRoles() public async Task ReturnNotFound_WhenNoRolesInTable() { // arrange - rapsContext.TblRoles.Returns((DbSet?)null); + rapsContext.TblRoles.ReturnsNull(); var rolesController = new RolesController(rapsContext); // act @@ -179,7 +180,7 @@ public async Task RejectFindRole_WithInvalidId() // arrange int RoleId = -1; var mockSet = GetTestRoles().BuildMockDbSet(); - mockSet.FindAsync(Arg.Any()).Returns((TblRole?)null); + mockSet.FindAsync(Arg.Any(), Arg.Any()).ReturnsNull(); rapsContext.TblRoles.Returns(mockSet); var rolesController = new RolesController(rapsContext); diff --git a/test/Services/EmailServiceTests.cs b/test/Services/EmailServiceTests.cs index a1d292e0c..07242c900 100644 --- a/test/Services/EmailServiceTests.cs +++ b/test/Services/EmailServiceTests.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NSubstitute; +using NSubstitute.ReturnsExtensions; using Viper.Models.AAUD; using Viper.Services; @@ -122,7 +123,7 @@ public async Task SendEmailAsync_RedirectEnabled_NoUser_SuppressesEmail() UseMailpit = true, RedirectToCurrentUser = true }; - _userHelperMock.GetCurrentUser().Returns((AaudUser?)null); + _userHelperMock.GetCurrentUser().ReturnsNull(); var service = CreateService(settings); // Act - should not throw, email is silently suppressed @@ -208,7 +209,7 @@ public async Task SendEmailAsync_UseMailpitFalse_RedirectEnabled_NoUser_Suppress UseMailpit = false, RedirectToCurrentUser = true }; - _userHelperMock.GetCurrentUser().Returns((AaudUser?)null); + _userHelperMock.GetCurrentUser().ReturnsNull(); var service = CreateService(settings); // Act - no exception should be thrown; email is suppressed before SMTP attempt diff --git a/test/Students/EmergencyContactControllerTests.cs b/test/Students/EmergencyContactControllerTests.cs index 069a96a71..ebde5a633 100644 --- a/test/Students/EmergencyContactControllerTests.cs +++ b/test/Students/EmergencyContactControllerTests.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using NSubstitute.ExceptionExtensions; using Viper.Areas.Students.Constants; using Viper.Areas.Students.Controllers; @@ -64,7 +65,7 @@ public async Task GetStudentContactList_ReturnsOk() [Fact] public async Task GetStudentContactDetail_NoUser_ReturnsUnauthorized() { - _userHelper.GetCurrentUser().Returns((AaudUser?)null); + _userHelper.GetCurrentUser().ReturnsNull(); var result = await _controller.GetStudentContactDetail(1); @@ -225,7 +226,7 @@ public async Task GetStudentContactDetail_NotFound_Returns404() _userHelper.HasPermission(_rapsContext, adminUser, EmergencyContactPermissions.SISAllStudents).Returns(false); _service.CanEditAsync(999, adminUser.LoginId).Returns(true); - _service.GetStudentContactDetailAsync(999, true).Returns((StudentContactDetailDto?)null); + _service.GetStudentContactDetailAsync(999, true).ReturnsNull(); var result = await _controller.GetStudentContactDetail(999); @@ -239,7 +240,7 @@ public async Task GetStudentContactDetail_NotFound_Returns404() [Fact] public async Task UpdateStudentContact_NoUser_ReturnsUnauthorized() { - _userHelper.GetCurrentUser().Returns((AaudUser?)null); + _userHelper.GetCurrentUser().ReturnsNull(); var result = await _controller.UpdateStudentContact(1, new UpdateStudentContactRequest { ContactPermanent = false }); @@ -450,7 +451,7 @@ public async Task ToggleIndividualAccess_UserNotFound_Returns404() [Fact] public async Task CanEdit_NoUser_ReturnsUnauthorized() { - _userHelper.GetCurrentUser().Returns((AaudUser?)null); + _userHelper.GetCurrentUser().ReturnsNull(); var result = await _controller.CanEdit(1); diff --git a/test/Students/PhotoGalleryControllerTest.cs b/test/Students/PhotoGalleryControllerTest.cs index a96e32d56..115b731cd 100644 --- a/test/Students/PhotoGalleryControllerTest.cs +++ b/test/Students/PhotoGalleryControllerTest.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using NSubstitute; +using NSubstitute.ReturnsExtensions; using Viper.Areas.Curriculum.Services; using Viper.Areas.Students.Controllers; using Viper.Areas.Students.Models; @@ -159,7 +160,7 @@ public async Task GetCourseGallery_CourseNotFound_ReturnsNotFound() _mockStudentGroupService.GetStudentsByCourseAsync(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(new List()); _mockCourseService.GetCourseInfoAsync(Arg.Any(), Arg.Any()) - .Returns((CourseInfo?)null); + .ReturnsNull(); // Act var result = await _controller.GetCourseGallery("202409", "12345", false);