Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -139,7 +140,6 @@ IJoinTimeWebService joinTimeWebService
OldTimeSelectionList = new();
TimeSelectionsCheckedUsers = new();
TimeSelectionBackstage = new();

}

[BindProperty]
Expand Down Expand Up @@ -326,9 +326,7 @@ public async Task<IActionResult> 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)
Expand Down Expand Up @@ -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)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,5 @@ public interface IJoinTimeRepository
Task<Dictionary<JoinTime, TimeSelection>> GetFreeTimeMarcadosAntigos();
Task UpdateRange(List<JoinTime> jts);
Task<List<JoinTime>> GetJoinTimesAtivos(Guid timeId);

}
}
11 changes: 7 additions & 4 deletions src/Core/Infrastructure/Repositories/JoinTimeRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,13 @@ public async Task UpdateRange(List<JoinTime> jts)
public async Task<List<JoinTime>> 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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ public async Task UpdateOldJoinTimes()

public async Task<List<JoinTime>> GetJoinTimesAtivos(Guid timeId)
{
var route = Path.Combine(baseRoute, $"GetJoinTimesAtivos/{timeId}");
Console.WriteLine(route);
var route = Path.Combine(baseRoute, timeId.ToString());
return await client.GetAsync<List<JoinTime>>(route);
}
}
2 changes: 1 addition & 1 deletion src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ [FromServices] IJoinTimeBusinessLogic _logic
}
}

public static async Task<IResult> GetJoinTimesAtivos(
public static async Task<IResult> GetJoinTimesAtivos(
[FromRoute] Guid timeId,
[FromServices] IJoinTimeBusinessLogic _logic
)
Expand Down
12 changes: 8 additions & 4 deletions tests/FreeTime/FreeTimeBackstageTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
36 changes: 29 additions & 7 deletions tests/JoinTime/JoinTimeBusinessLogicTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,6 @@ public async Task GetJoinTimesAtivos_ShouldReturnEmptyList_WhenNoMatchingJoinTim
);
var timeId = Guid.NewGuid();


mockJoinTimeRepository
.Setup(repo => repo.GetJoinTimesAtivos(timeId))
.ReturnsAsync(new List<JoinTime>());
Expand All @@ -188,7 +187,13 @@ public async Task GetJoinTimesAtivos_ShouldReturnOnlyMarcadoJoinTimes()

var joinTimes = new List<JoinTime>
{
JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Marcado, false, TipoAction.Aprender)
JoinTime.Create(
Guid.NewGuid(),
timeId,
StatusJoinTime.Marcado,
false,
TipoAction.Aprender
)
};

mockJoinTimeRepository
Expand Down Expand Up @@ -238,8 +243,20 @@ public async Task GetJoinTimesAtivos_ShouldReturnMarcadoAndPendenteJoinTimes()

var joinTimes = new List<JoinTime>
{
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
Expand All @@ -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);
}


}
73 changes: 51 additions & 22 deletions tests/JoinTime/JoinTimeEndPointsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,67 +43,85 @@ public async Task UpdateOldJoinTimes_ReturnsBadRequest_OnException()
[Fact]
public async Task GetJoinTimesAtivos_ReturnsOk_WithValidData()
{
// Arrange:
// Arrange:
var mockLogic = new Mock<IJoinTimeBusinessLogic>();
var validGuid = Guid.NewGuid();
var joinTimes = new List<JoinTime>
{
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<Ok<List<JoinTime>>>(result);
Assert.Equal(joinTimes, okResult.Value);
}

[Fact]
public async Task GetJoinTimesAtivos_ReturnsNotFound_WithValidDataButNoResults()
{
// Arrange:
// Arrange:
var mockLogic = new Mock<IJoinTimeBusinessLogic>();
var validGuid = Guid.NewGuid();
mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(new List<JoinTime>());
mockLogic
.Setup(logic => logic.GetJoinTimesAtivos(validGuid))
.ReturnsAsync(new List<JoinTime>());

// Act:
// Act:
var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object);

// Assert:
// Assert:
Assert.IsType<NotFound>(result);
}

[Fact]
public async Task GetJoinTimesAtivos_ReturnsBadRequest_OnException()
{
// Arrange:
// Arrange:
var mockLogic = new Mock<IJoinTimeBusinessLogic>();
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<BadRequest<string>>(result);
Assert.Equal("Test error", badRequestResult.Value);
}

[Fact]
public async Task GetJoinTimesAtivos_ReturnsBadRequest_WithInvalidGuid()
{
// Arrange:
// Arrange:
var mockLogic = new Mock<IJoinTimeBusinessLogic>();
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<BadRequest<string>>(result);
Assert.Equal("Invalid GUID", badRequestResult.Value);
}
Expand All @@ -116,18 +134,29 @@ public async Task GetJoinTimesAtivos_ReturnsAllJoinTimes_WithMultipleResults()
var validGuid = Guid.NewGuid();
var joinTimes = new List<JoinTime>
{
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);

// Act:
var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object);

// Assert:
// Assert:
var okResult = Assert.IsType<Ok<List<JoinTime>>>(result);
Assert.True(okResult.Value?.Count == 3);
}

}
24 changes: 15 additions & 9 deletions tests/JoinTime/JoinTimeRepositoryTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,12 @@ public JoinTimeRepositoryTest()

private void InitializeJoinTimes()
{

_context.JoinTimes.AddRange(
new List<JoinTime>
{
JoinTime.Create(
Guid.NewGuid(),
Guid.NewGuid(),
Guid.NewGuid(),
StatusJoinTime.Marcado,
false,
TipoAction.Aprender
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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);
}
Expand Down
Loading