Remove EF query warnings from test runs
This commit is contained in:
@@ -9,7 +9,7 @@ internal sealed class AdminWorkflowService(AppDbContext db)
|
|||||||
{
|
{
|
||||||
public async Task<IResult> SetResultsOpenAsync(bool resultsOpen)
|
public async Task<IResult> SetResultsOpenAsync(bool resultsOpen)
|
||||||
{
|
{
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.ResultsOpen = resultsOpen;
|
state.ResultsOpen = resultsOpen;
|
||||||
state.UpdatedAt = DateTimeOffset.UtcNow;
|
state.UpdatedAt = DateTimeOffset.UtcNow;
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ internal sealed class AdminWorkflowService(AppDbContext db)
|
|||||||
|
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
await tx.CommitAsync();
|
await tx.CommitAsync();
|
||||||
var currentState = await db.AppState.AsNoTracking().FirstAsync();
|
var currentState = await db.AppState.AsNoTracking().SingleAsync();
|
||||||
return Results.Ok(new AdminResultsStateResponse(currentState.ResultsOpen, currentState.UpdatedAt));
|
return Results.Ok(new AdminResultsStateResponse(currentState.ResultsOpen, currentState.UpdatedAt));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,7 +186,7 @@ internal sealed class AdminWorkflowService(AppDbContext db)
|
|||||||
await db.Suggestions.ExecuteDeleteAsync();
|
await db.Suggestions.ExecuteDeleteAsync();
|
||||||
|
|
||||||
await db.Players.ExecuteUpdateAsync(p => p.SetProperty(x => x.CurrentPhase, Phase.Suggest).SetProperty(x => x.VotesFinal, false).SetProperty(x => x.HasJoker, false));
|
await db.Players.ExecuteUpdateAsync(p => p.SetProperty(x => x.CurrentPhase, Phase.Suggest).SetProperty(x => x.VotesFinal, false).SetProperty(x => x.HasJoker, false));
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.ResultsOpen = false;
|
state.ResultsOpen = false;
|
||||||
state.UpdatedAt = DateTimeOffset.UtcNow;
|
state.UpdatedAt = DateTimeOffset.UtcNow;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ internal static class EndpointHelpers
|
|||||||
if (playerPhase is null)
|
if (playerPhase is null)
|
||||||
return Phase.Suggest;
|
return Phase.Suggest;
|
||||||
|
|
||||||
var resultsOpen = await db.AppState.AsNoTracking().Select(s => s.ResultsOpen).FirstAsync();
|
var resultsOpen = await db.AppState.AsNoTracking().Select(s => s.ResultsOpen).SingleAsync();
|
||||||
return GetCurrentPhase(playerPhase.Value, resultsOpen);
|
return GetCurrentPhase(playerPhase.Value, resultsOpen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ internal sealed class ResultsWorkflowService(AppDbContext db)
|
|||||||
{
|
{
|
||||||
public async Task<IResult> GetResultsAsync(Guid playerId)
|
public async Task<IResult> GetResultsAsync(Guid playerId)
|
||||||
{
|
{
|
||||||
var appState = await db.AppState.AsNoTracking().FirstAsync();
|
var appState = await db.AppState.AsNoTracking().SingleAsync();
|
||||||
if (!appState.ResultsOpen)
|
if (!appState.ResultsOpen)
|
||||||
return EndpointHelpers.BadRequestError("Results are locked until the admin enables them.");
|
return EndpointHelpers.BadRequestError("Results are locked until the admin enables them.");
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ internal sealed class StateWorkflowService(AppDbContext db)
|
|||||||
{
|
{
|
||||||
public async Task<IResult> GetStateAsync(Player player)
|
public async Task<IResult> GetStateAsync(Player player)
|
||||||
{
|
{
|
||||||
var state = await db.AppState.AsNoTracking().FirstAsync();
|
var state = await db.AppState.AsNoTracking().SingleAsync();
|
||||||
var phase = EndpointHelpers.GetCurrentPhase(player.CurrentPhase, state.ResultsOpen);
|
var phase = EndpointHelpers.GetCurrentPhase(player.CurrentPhase, state.ResultsOpen);
|
||||||
var summary = new StateSummaryResponse(
|
var summary = new StateSummaryResponse(
|
||||||
phase,
|
phase,
|
||||||
@@ -26,7 +26,7 @@ internal sealed class StateWorkflowService(AppDbContext db)
|
|||||||
|
|
||||||
public async Task<IResult> GetMeAsync(Player player)
|
public async Task<IResult> GetMeAsync(Player player)
|
||||||
{
|
{
|
||||||
var state = await db.AppState.AsNoTracking().FirstAsync();
|
var state = await db.AppState.AsNoTracking().SingleAsync();
|
||||||
var phase = EndpointHelpers.GetCurrentPhase(player.CurrentPhase, state.ResultsOpen);
|
var phase = EndpointHelpers.GetCurrentPhase(player.CurrentPhase, state.ResultsOpen);
|
||||||
return Results.Ok(new MeResponse(
|
return Results.Ok(new MeResponse(
|
||||||
player.Id,
|
player.Id,
|
||||||
@@ -41,7 +41,7 @@ internal sealed class StateWorkflowService(AppDbContext db)
|
|||||||
|
|
||||||
public async Task<IResult> NextPhaseAsync(Player player)
|
public async Task<IResult> NextPhaseAsync(Player player)
|
||||||
{
|
{
|
||||||
var appState = await db.AppState.FirstAsync();
|
var appState = await db.AppState.SingleAsync();
|
||||||
var shouldSave = EndpointHelpers.ReconcilePlayerPhase(player, appState.ResultsOpen);
|
var shouldSave = EndpointHelpers.ReconcilePlayerPhase(player, appState.ResultsOpen);
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -75,7 +75,7 @@ internal sealed class StateWorkflowService(AppDbContext db)
|
|||||||
if (!player.IsAdmin)
|
if (!player.IsAdmin)
|
||||||
return EndpointHelpers.BadRequestError("Only admins can move backward.");
|
return EndpointHelpers.BadRequestError("Only admins can move backward.");
|
||||||
|
|
||||||
var appState = await db.AppState.FirstAsync();
|
var appState = await db.AppState.SingleAsync();
|
||||||
_ = EndpointHelpers.ReconcilePlayerPhase(player, appState.ResultsOpen);
|
_ = EndpointHelpers.ReconcilePlayerPhase(player, appState.ResultsOpen);
|
||||||
|
|
||||||
player.CurrentPhase = PrevPhase(player.CurrentPhase);
|
player.CurrentPhase = PrevPhase(player.CurrentPhase);
|
||||||
|
|||||||
@@ -244,7 +244,7 @@ public class AdminTests
|
|||||||
{
|
{
|
||||||
var p = await db.Players.FirstAsync(x => !x.IsAdmin);
|
var p = await db.Players.FirstAsync(x => !x.IsAdmin);
|
||||||
p.VotesFinal = true;
|
p.VotesFinal = true;
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.UpdatedAt = DateTimeOffset.UnixEpoch;
|
state.UpdatedAt = DateTimeOffset.UnixEpoch;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -257,7 +257,7 @@ public class AdminTests
|
|||||||
var p = await db.Players.FirstAsync(x => !x.IsAdmin);
|
var p = await db.Players.FirstAsync(x => !x.IsAdmin);
|
||||||
Assert.Equal(Phase.Vote, p.CurrentPhase);
|
Assert.Equal(Phase.Vote, p.CurrentPhase);
|
||||||
Assert.False(p.VotesFinal);
|
Assert.False(p.VotesFinal);
|
||||||
var state = await db.AppState.AsNoTracking().FirstAsync();
|
var state = await db.AppState.AsNoTracking().SingleAsync();
|
||||||
Assert.False(state.ResultsOpen);
|
Assert.False(state.ResultsOpen);
|
||||||
Assert.True(state.UpdatedAt > DateTimeOffset.UnixEpoch);
|
Assert.True(state.UpdatedAt > DateTimeOffset.UnixEpoch);
|
||||||
});
|
});
|
||||||
@@ -433,7 +433,7 @@ public class AdminTests
|
|||||||
var player = await db.Players.SingleAsync(x => x.Username == "flags");
|
var player = await db.Players.SingleAsync(x => x.Username == "flags");
|
||||||
Assert.False(player.HasJoker);
|
Assert.False(player.HasJoker);
|
||||||
Assert.False(player.VotesFinal);
|
Assert.False(player.VotesFinal);
|
||||||
var state = await db.AppState.AsNoTracking().FirstAsync();
|
var state = await db.AppState.AsNoTracking().SingleAsync();
|
||||||
Assert.False(state.ResultsOpen);
|
Assert.False(state.ResultsOpen);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -441,7 +441,7 @@ public class AdminTests
|
|||||||
factoryReset.EnsureSuccessStatusCode();
|
factoryReset.EnsureSuccessStatusCode();
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var state = await db.AppState.AsNoTracking().FirstAsync();
|
var state = await db.AppState.AsNoTracking().SingleAsync();
|
||||||
Assert.False(state.ResultsOpen);
|
Assert.False(state.ResultsOpen);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ public class AuthTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var player = await db.Players.FirstAsync();
|
var player = await db.Players.SingleAsync();
|
||||||
player.DisplayName = null;
|
player.DisplayName = null;
|
||||||
player.LastLoginAt = DateTimeOffset.UnixEpoch;
|
player.LastLoginAt = DateTimeOffset.UnixEpoch;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ public class FiltersTests
|
|||||||
DisplayName = "User"
|
DisplayName = "User"
|
||||||
};
|
};
|
||||||
db.Players.Add(player);
|
db.Players.Add(player);
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.ResultsOpen = resultsOpen;
|
state.ResultsOpen = resultsOpen;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class StateTests
|
|||||||
await client.RegisterAsync("payload");
|
await client.RegisterAsync("payload");
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var player = await db.Players.FirstAsync();
|
var player = await db.Players.SingleAsync();
|
||||||
player.HasJoker = true;
|
player.HasJoker = true;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -55,7 +55,7 @@ public class StateTests
|
|||||||
};
|
};
|
||||||
playerId = player.Id;
|
playerId = player.Id;
|
||||||
db.Players.Add(player);
|
db.Players.Add(player);
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.ResultsOpen = true;
|
state.ResultsOpen = true;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -69,7 +69,7 @@ public class StateTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.ResultsOpen = false;
|
state.ResultsOpen = false;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -95,7 +95,7 @@ public class StateTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var player = await db.Players.FirstAsync();
|
var player = await db.Players.SingleAsync();
|
||||||
player.VotesFinal = true;
|
player.VotesFinal = true;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -127,7 +127,7 @@ public class StateTests
|
|||||||
await admin.PostAsJsonAsync("/api/me/phase/next", new { }); // Vote
|
await admin.PostAsJsonAsync("/api/me/phase/next", new { }); // Vote
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var player = await db.Players.FirstAsync();
|
var player = await db.Players.SingleAsync();
|
||||||
player.VotesFinal = true;
|
player.VotesFinal = true;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -255,7 +255,7 @@ public class StateTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var player = await db.Players.FirstAsync();
|
var player = await db.Players.SingleAsync();
|
||||||
db.Players.Remove(player);
|
db.Players.Remove(player);
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -284,10 +284,10 @@ public class StateTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var player = await db.Players.FirstAsync();
|
var player = await db.Players.SingleAsync();
|
||||||
player.CurrentPhase = Phase.Results;
|
player.CurrentPhase = Phase.Results;
|
||||||
player.VotesFinal = true;
|
player.VotesFinal = true;
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.ResultsOpen = false;
|
state.ResultsOpen = false;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -300,7 +300,7 @@ public class StateTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var player = await db.Players.AsNoTracking().FirstAsync();
|
var player = await db.Players.AsNoTracking().SingleAsync();
|
||||||
Assert.Equal(Phase.Results, player.CurrentPhase);
|
Assert.Equal(Phase.Results, player.CurrentPhase);
|
||||||
Assert.True(player.VotesFinal);
|
Assert.True(player.VotesFinal);
|
||||||
});
|
});
|
||||||
@@ -323,17 +323,18 @@ public class StateTests
|
|||||||
CurrentPhase = Phase.Vote
|
CurrentPhase = Phase.Vote
|
||||||
};
|
};
|
||||||
db.Players.Add(player);
|
db.Players.Add(player);
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.ResultsOpen = true;
|
state.ResultsOpen = true;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
|
|
||||||
using var scope = factory.Services.CreateScope();
|
using var scope = factory.Services.CreateScope();
|
||||||
var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
|
var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
|
||||||
var playerId = await db.Players.Select(p => p.Id).FirstAsync();
|
var playerId = await db.Players.Select(p => p.Id).SingleAsync();
|
||||||
var phase = await Endpoints.EndpointHelpers.GetCurrentPhaseAsync(db, playerId);
|
var phase = await Endpoints.EndpointHelpers.GetCurrentPhaseAsync(db, playerId);
|
||||||
|
|
||||||
Assert.Equal(Phase.Results, phase);
|
Assert.Equal(Phase.Results, phase);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ public class SuggestionTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var p = await db.Players.FirstAsync();
|
var p = await db.Players.SingleAsync(x => x.Username == "joker");
|
||||||
p.HasJoker = true;
|
p.HasJoker = true;
|
||||||
p.CurrentPhase = Domain.Phase.Vote;
|
p.CurrentPhase = Domain.Phase.Vote;
|
||||||
var o = await db.Players.SingleAsync(x => x.Username == "other");
|
var o = await db.Players.SingleAsync(x => x.Username == "other");
|
||||||
@@ -114,7 +114,7 @@ public class SuggestionTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var p = await db.Players.FirstAsync();
|
var p = await db.Players.SingleAsync(x => x.Username == "joker");
|
||||||
Assert.False(p.HasJoker);
|
Assert.False(p.HasJoker);
|
||||||
Assert.False(p.VotesFinal);
|
Assert.False(p.VotesFinal);
|
||||||
var o = await db.Players.SingleAsync(x => x.Username == "other");
|
var o = await db.Players.SingleAsync(x => x.Username == "other");
|
||||||
@@ -187,9 +187,9 @@ public class SuggestionTests
|
|||||||
// Move everyone to Results
|
// Move everyone to Results
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var state = await db.AppState.FirstAsync();
|
var state = await db.AppState.SingleAsync();
|
||||||
state.ResultsOpen = true;
|
state.ResultsOpen = true;
|
||||||
var p = await db.Players.FirstAsync();
|
var p = await db.Players.SingleAsync();
|
||||||
p.CurrentPhase = Domain.Phase.Results;
|
p.CurrentPhase = Domain.Phase.Results;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -267,7 +267,7 @@ public class SuggestionTests
|
|||||||
await client.PostAsJsonAsync("/api/me/phase/next", new { });
|
await client.PostAsJsonAsync("/api/me/phase/next", new { });
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var p = await db.Players.FirstAsync();
|
var p = await db.Players.SingleAsync();
|
||||||
p.HasJoker = true;
|
p.HasJoker = true;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -288,7 +288,7 @@ public class SuggestionTests
|
|||||||
// Grant another joker and add a seventh suggestion
|
// Grant another joker and add a seventh suggestion
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var p = await db.Players.FirstAsync();
|
var p = await db.Players.SingleAsync();
|
||||||
p.HasJoker = true;
|
p.HasJoker = true;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -389,7 +389,7 @@ public class SuggestionTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var p = await db.Players.FirstAsync();
|
var p = await db.Players.SingleAsync();
|
||||||
p.CurrentPhase = Domain.Phase.Vote;
|
p.CurrentPhase = Domain.Phase.Vote;
|
||||||
p.DisplayName = null;
|
p.DisplayName = null;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
@@ -410,7 +410,7 @@ public class SuggestionTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var p = await db.Players.FirstAsync();
|
var p = await db.Players.SingleAsync();
|
||||||
p.CurrentPhase = Domain.Phase.Suggest;
|
p.CurrentPhase = Domain.Phase.Suggest;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
@@ -526,7 +526,7 @@ public class SuggestionTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var s = await db.Suggestions.AsNoTracking().FirstAsync();
|
var s = await db.Suggestions.AsNoTracking().SingleAsync();
|
||||||
Assert.Equal(50, s.Genre!.Length);
|
Assert.Equal(50, s.Genre!.Length);
|
||||||
Assert.Equal(500, s.Description!.Length);
|
Assert.Equal(500, s.Description!.Length);
|
||||||
Assert.Equal("http://example.com/img.png", s.ScreenshotUrl);
|
Assert.Equal("http://example.com/img.png", s.ScreenshotUrl);
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ public class VoteTests
|
|||||||
|
|
||||||
await factory.WithDbContextAsync(async db =>
|
await factory.WithDbContextAsync(async db =>
|
||||||
{
|
{
|
||||||
var p = await db.Players.FirstAsync();
|
var p = await db.Players.SingleAsync();
|
||||||
p.DisplayName = null;
|
p.DisplayName = null;
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user