diff --git a/Endpoints/SuggestEndpoints.cs b/Endpoints/SuggestEndpoints.cs index e7b8efe..1c5d8bb 100644 --- a/Endpoints/SuggestEndpoints.cs +++ b/Endpoints/SuggestEndpoints.cs @@ -78,10 +78,9 @@ public static class SuggestEndpoints } var existingCount = await db.Suggestions.CountAsync(s => s.PlayerId == player.Id); - var maxSuggestions = usingJoker ? 6 : 5; - if (existingCount >= maxSuggestions) + if (!usingJoker && existingCount >= 5) { - return Results.BadRequest(new { error = "You have reached the suggestion limit." }); + return Results.BadRequest(new { error = "You have reached the 5 suggestion limit." }); } var suggestion = new Suggestion diff --git a/GameList.Tests/SuggestionTests.cs b/GameList.Tests/SuggestionTests.cs index f110424..b20a226 100644 --- a/GameList.Tests/SuggestionTests.cs +++ b/GameList.Tests/SuggestionTests.cs @@ -241,7 +241,7 @@ public class SuggestionTests } [Fact] - public async Task Joker_allows_sixth_suggestion_but_blocks_seventh() + public async Task Joker_allows_unlimited_extra_suggestions_when_granted_multiple_times() { using var factory = new TestWebApplicationFactory(); var client = factory.CreateClientWithCookies(); @@ -286,6 +286,14 @@ public class SuggestionTests }); sixth.EnsureSuccessStatusCode(); + // Grant another joker and add a seventh suggestion + await factory.WithDbContextAsync(async db => + { + var p = await db.Players.FirstAsync(); + p.HasJoker = true; + await db.SaveChangesAsync(); + }); + var seventh = await client.PostAsJsonAsync("/api/suggestions", new { Name = "TooMany", @@ -298,7 +306,22 @@ public class SuggestionTests MaxPlayers = (int?)null }); - Assert.Equal(HttpStatusCode.BadRequest, seventh.StatusCode); + seventh.EnsureSuccessStatusCode(); + + // No joker left; further suggestions should be blocked + var eighth = await client.PostAsJsonAsync("/api/suggestions", new + { + Name = "BlockedNow", + Genre = (string?)null, + Description = (string?)null, + ScreenshotUrl = (string?)null, + YoutubeUrl = (string?)null, + GameUrl = (string?)null, + MinPlayers = (int?)null, + MaxPlayers = (int?)null + }); + + Assert.Equal(HttpStatusCode.BadRequest, eighth.StatusCode); } [Fact]