diff --git a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs index e629f287..00bcd901 100644 --- a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs +++ b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs @@ -1,4 +1,5 @@ using System.Net.Http.Headers; +using System.Security.Cryptography; using System.Text; using System.Text.Json; using APP.Platform.Pages.Components.ModalJoinTime; @@ -139,7 +140,6 @@ IJoinTimeWebService joinTimeWebService OldTimeSelectionList = new(); TimeSelectionsCheckedUsers = new(); TimeSelectionBackstage = new(); - } [BindProperty] @@ -326,9 +326,7 @@ public async Task OnGetRenderCalendarAsync() foreach (var time in freeTimeList) { - - var joinTimes = await _joinTimeWebService.GetJoinTimesAtivos(time.Key.Id); - + var joinTimes = await _joinTimeWebService.GetJoinTimesAtivos(time.Key.Id); var pendentJoinTimes = joinTimes .Where(j => j.StatusJoinTime == StatusJoinTime.Pendente) @@ -1015,8 +1013,8 @@ public IActionResult OnPostSetAlunoAleatorio(Guid timeSelectionId) var x = Math.Min(availableSlots, pendentJoinTimes.Count()); for (var i = 0; i < x; i++) { - var randomIndex = new Random().Next(pendentJoinTimes.Length); - var jt = pendentJoinTimes.Skip(randomIndex - 1).Take(1).FirstOrDefault(); + var randomGenerator = RandomNumberGenerator.GetInt32(pendentJoinTimes.Length); + var jt = pendentJoinTimes.Skip(randomGenerator - 1).Take(1).FirstOrDefault(); if (jt != null) { diff --git a/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs b/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs index 7c4102aa..f8434fdb 100644 --- a/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs +++ b/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs @@ -8,6 +8,5 @@ public interface IJoinTimeRepository Task> GetFreeTimeMarcadosAntigos(); Task UpdateRange(List jts); Task> GetJoinTimesAtivos(Guid timeId); - } } diff --git a/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs b/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs index 2855ccf8..60a18d70 100644 --- a/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs +++ b/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs @@ -58,10 +58,13 @@ public async Task UpdateRange(List jts) public async Task> GetJoinTimesAtivos(Guid timeId) { return await DbContext - .JoinTimes - .Where(j => j.TimeSelectionId == timeId && - (j.StatusJoinTime == StatusJoinTime.Marcado || - j.StatusJoinTime == StatusJoinTime.Pendente)) + .JoinTimes.Where(j => + j.TimeSelectionId == timeId + && ( + j.StatusJoinTime == StatusJoinTime.Marcado + || j.StatusJoinTime == StatusJoinTime.Pendente + ) + ) .ToListAsync(); } } diff --git a/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs b/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs index 83285875..9960a16d 100644 --- a/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs +++ b/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs @@ -20,8 +20,7 @@ public async Task UpdateOldJoinTimes() public async Task> GetJoinTimesAtivos(Guid timeId) { - var route = Path.Combine(baseRoute, $"GetJoinTimesAtivos/{timeId}"); - Console.WriteLine(route); + var route = Path.Combine(baseRoute, timeId.ToString()); return await client.GetAsync>(route); } } diff --git a/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs b/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs index 8d4e487a..eb7d0aa0 100644 --- a/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs +++ b/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs @@ -35,7 +35,7 @@ [FromServices] IJoinTimeBusinessLogic _logic } } - public static async Task GetJoinTimesAtivos( + public static async Task GetJoinTimesAtivos( [FromRoute] Guid timeId, [FromServices] IJoinTimeBusinessLogic _logic ) diff --git a/tests/FreeTime/FreeTimeBackstageTest.cs b/tests/FreeTime/FreeTimeBackstageTest.cs index d600b1ef..bd8a2f21 100644 --- a/tests/FreeTime/FreeTimeBackstageTest.cs +++ b/tests/FreeTime/FreeTimeBackstageTest.cs @@ -13,12 +13,16 @@ public void CreateFreeTimeBackstage_ReturnsCorrectValues() bool expectedIlimitado = true; // Act - var result = FreeTimeBackstage.Create(expectedTimeSelectionId, expectedMaxParticipants, expectedIlimitado); + var result = FreeTimeBackstage.Create( + expectedTimeSelectionId, + expectedMaxParticipants, + expectedIlimitado + ); // Assert Assert.NotNull(result); - Assert.Equal(expectedTimeSelectionId,result.TimeSelectionId); - Assert.Equal(expectedMaxParticipants,result.MaxParticipants); - Assert.Equal(expectedIlimitado,result.Ilimitado); + Assert.Equal(expectedTimeSelectionId, result.TimeSelectionId); + Assert.Equal(expectedMaxParticipants, result.MaxParticipants); + Assert.Equal(expectedIlimitado, result.Ilimitado); } } diff --git a/tests/JoinTime/JoinTimeBusinessLogicTest.cs b/tests/JoinTime/JoinTimeBusinessLogicTest.cs index 37031b72..2e7b9ec2 100644 --- a/tests/JoinTime/JoinTimeBusinessLogicTest.cs +++ b/tests/JoinTime/JoinTimeBusinessLogicTest.cs @@ -161,7 +161,6 @@ public async Task GetJoinTimesAtivos_ShouldReturnEmptyList_WhenNoMatchingJoinTim ); var timeId = Guid.NewGuid(); - mockJoinTimeRepository .Setup(repo => repo.GetJoinTimesAtivos(timeId)) .ReturnsAsync(new List()); @@ -188,7 +187,13 @@ public async Task GetJoinTimesAtivos_ShouldReturnOnlyMarcadoJoinTimes() var joinTimes = new List { - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Marcado, false, TipoAction.Aprender) + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ) }; mockJoinTimeRepository @@ -238,8 +243,20 @@ public async Task GetJoinTimesAtivos_ShouldReturnMarcadoAndPendenteJoinTimes() var joinTimes = new List { - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Pendente, false, TipoAction.Aprender) + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ) }; mockJoinTimeRepository @@ -252,9 +269,14 @@ public async Task GetJoinTimesAtivos_ShouldReturnMarcadoAndPendenteJoinTimes() // Assert Assert.NotNull(result); Assert.Equal(2, result.Count); - Assert.All(result, jt => Assert.Contains(jt.StatusJoinTime, new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente })); + Assert.All( + result, + jt => + Assert.Contains( + jt.StatusJoinTime, + new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente } + ) + ); mockJoinTimeRepository.Verify(repo => repo.GetJoinTimesAtivos(timeId), Times.Once); } - - } diff --git a/tests/JoinTime/JoinTimeEndPointsTests.cs b/tests/JoinTime/JoinTimeEndPointsTests.cs index 6048ef96..84e5cd98 100644 --- a/tests/JoinTime/JoinTimeEndPointsTests.cs +++ b/tests/JoinTime/JoinTimeEndPointsTests.cs @@ -43,20 +43,32 @@ public async Task UpdateOldJoinTimes_ReturnsBadRequest_OnException() [Fact] public async Task GetJoinTimesAtivos_ReturnsOk_WithValidData() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var validGuid = Guid.NewGuid(); var joinTimes = new List { - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Pendente, false, TipoAction.Aprender) + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ) }; mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(joinTimes); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: var okResult = Assert.IsType>>(result); Assert.Equal(joinTimes, okResult.Value); } @@ -64,30 +76,34 @@ public async Task GetJoinTimesAtivos_ReturnsOk_WithValidData() [Fact] public async Task GetJoinTimesAtivos_ReturnsNotFound_WithValidDataButNoResults() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var validGuid = Guid.NewGuid(); - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(new List()); + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(validGuid)) + .ReturnsAsync(new List()); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: Assert.IsType(result); } [Fact] public async Task GetJoinTimesAtivos_ReturnsBadRequest_OnException() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var invalidGuid = Guid.NewGuid(); - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)).ThrowsAsync(new Exception("Test error")); + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)) + .ThrowsAsync(new Exception("Test error")); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(invalidGuid, mockLogic.Object); - // Assert: + // Assert: var badRequestResult = Assert.IsType>(result); Assert.Equal("Test error", badRequestResult.Value); } @@ -95,15 +111,17 @@ public async Task GetJoinTimesAtivos_ReturnsBadRequest_OnException() [Fact] public async Task GetJoinTimesAtivos_ReturnsBadRequest_WithInvalidGuid() { - // Arrange: + // Arrange: var mockLogic = new Mock(); - var invalidGuid = Guid.Empty; - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)).ThrowsAsync(new ArgumentException("Invalid GUID")); + var invalidGuid = Guid.Empty; + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)) + .ThrowsAsync(new ArgumentException("Invalid GUID")); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(invalidGuid, mockLogic.Object); - // Assert: + // Assert: var badRequestResult = Assert.IsType>(result); Assert.Equal("Invalid GUID", badRequestResult.Value); } @@ -116,8 +134,20 @@ public async Task GetJoinTimesAtivos_ReturnsAllJoinTimes_WithMultipleResults() var validGuid = Guid.NewGuid(); var joinTimes = new List { - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Pendente, false, TipoAction.Aprender), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ), JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Ensinar) }; mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(joinTimes); @@ -125,9 +155,8 @@ public async Task GetJoinTimesAtivos_ReturnsAllJoinTimes_WithMultipleResults() // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: var okResult = Assert.IsType>>(result); Assert.True(okResult.Value?.Count == 3); } - } diff --git a/tests/JoinTime/JoinTimeRepositoryTest.cs b/tests/JoinTime/JoinTimeRepositoryTest.cs index 22fafc2d..88107f00 100644 --- a/tests/JoinTime/JoinTimeRepositoryTest.cs +++ b/tests/JoinTime/JoinTimeRepositoryTest.cs @@ -28,13 +28,12 @@ public JoinTimeRepositoryTest() private void InitializeJoinTimes() { - _context.JoinTimes.AddRange( new List { JoinTime.Create( Guid.NewGuid(), - Guid.NewGuid(), + Guid.NewGuid(), StatusJoinTime.Marcado, false, TipoAction.Aprender @@ -124,8 +123,8 @@ public async Task UpdateRange_UpdatesJoinTimes() [Fact] public async Task GetJoinTimesAtivos_ReturnsCorrectJoinTimes() { - // Arrange: - var ts = TimeSelection.Create( + // Arrange: + var ts = TimeSelection.Create( Guid.NewGuid(), null, DateTime.Now.AddMinutes(-40), @@ -157,24 +156,31 @@ public async Task GetJoinTimesAtivos_ReturnsCorrectJoinTimes() await _context.SaveChangesAsync(); // Guid specificGuid = Guid.Parse("1cc5615c-c82f-4e5c-b2de-df5421c72a82"); - + // Act: var result = await _repository.GetJoinTimesAtivos(ts.Id); // Assert: Assert.NotNull(result); Assert.NotEmpty(result); // Verifica se há pelo menos um JoinTime retornado - Assert.All(result, jt => Assert.Contains(jt.StatusJoinTime, new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente })); + Assert.All( + result, + jt => + Assert.Contains( + jt.StatusJoinTime, + new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente } + ) + ); } - [Fact] + [Fact] public async Task GetJoinTimesAtivos_ReturnsEmptyList_WhenNoMatchingJoinTimes() { - // Act: + // Act: var nonExistentTimeSelectionId = Guid.NewGuid(); var result = await _repository.GetJoinTimesAtivos(nonExistentTimeSelectionId); - // Assert: + // Assert: Assert.NotNull(result); Assert.Empty(result); } diff --git a/tests/Live/LiveNotifyWorkerTest.cs b/tests/Live/LiveNotifyWorkerTest.cs index df994342..331e7a51 100644 --- a/tests/Live/LiveNotifyWorkerTest.cs +++ b/tests/Live/LiveNotifyWorkerTest.cs @@ -1,4 +1,3 @@ - using Background; using Domain.WebServices; using Microsoft.Extensions.DependencyInjection; @@ -17,19 +16,20 @@ public async Task StartAsync_ShouldCall_NotifyUpcomingLives() var mockServiceScope = new Mock(); var mockServiceProvider = new Mock(); - mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); + mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); mockServiceScope.Setup(x => x.ServiceProvider).Returns(mockServiceProvider.Object); - mockServiceProvider.Setup(x => x.GetService(typeof(ILiveWebService))).Returns(mockLiveWebService.Object); + mockServiceProvider + .Setup(x => x.GetService(typeof(ILiveWebService))) + .Returns(mockLiveWebService.Object); var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); const int EXECUTION_INTERVAL = 100; var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); - - await liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token); + + await liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token); mockLiveWebService.Verify(x => x.NotifyUpcomingLives(), Times.AtLeastOnce()); } - [Fact] public async Task StartAsync_ShouldCall_NotifyUpcomingLives_Exceptions() { @@ -38,17 +38,22 @@ public async Task StartAsync_ShouldCall_NotifyUpcomingLives_Exceptions() var mockServiceScope = new Mock(); var mockServiceProvider = new Mock(); - mockLiveWebService.Setup(x => x.NotifyUpcomingLives()).ThrowsAsync(new Exception("teste exception")); + mockLiveWebService + .Setup(x => x.NotifyUpcomingLives()) + .ThrowsAsync(new Exception("teste exception")); mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); mockServiceScope.Setup(x => x.ServiceProvider).Returns(mockServiceProvider.Object); - mockServiceProvider.Setup(x => x.GetService(typeof(ILiveWebService))).Returns(mockLiveWebService.Object); + mockServiceProvider + .Setup(x => x.GetService(typeof(ILiveWebService))) + .Returns(mockLiveWebService.Object); - var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); + var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); const int EXECUTION_INTERVAL = 100; - var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); - var exception = await Record.ExceptionAsync(() => liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token)); - - Assert.Null(exception); - } + var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); + var exception = await Record.ExceptionAsync( + () => liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token) + ); + Assert.Null(exception); + } }