feat: harden gmail sync foundation
This commit is contained in:
@@ -15,6 +15,39 @@ namespace JobTrackerApi.Tests;
|
||||
|
||||
public sealed class GmailControllerTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Status_returns_sync_state_fields_for_connected_account()
|
||||
{
|
||||
await using var db = CreateDb();
|
||||
var gmail = new Mock<IGmailOAuthService>();
|
||||
gmail.Setup(service => service.GetConnectionAsync("user-1", It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new GmailConnection
|
||||
{
|
||||
OwnerUserId = "user-1",
|
||||
GmailAddress = "user@example.test",
|
||||
ConnectedAt = DateTimeOffset.UtcNow.AddDays(-3),
|
||||
LastSyncedAt = DateTimeOffset.UtcNow.AddMinutes(-10),
|
||||
LastSyncAttemptedAt = DateTimeOffset.UtcNow.AddMinutes(-5),
|
||||
LastSyncSucceededAt = DateTimeOffset.UtcNow.AddMinutes(-10),
|
||||
LastSyncMode = "list-messages",
|
||||
LastSyncSource = "custom-query",
|
||||
LastSyncStatus = "error",
|
||||
LastSyncError = "Token refresh failed"
|
||||
});
|
||||
|
||||
var controller = CreateController(db, gmail.Object, "user-1");
|
||||
var result = await controller.Status(CancellationToken.None);
|
||||
|
||||
var ok = Assert.IsType<OkObjectResult>(result.Result);
|
||||
var payload = Assert.IsType<GmailController.GmailConnectionStatusDto>(ok.Value);
|
||||
Assert.True(payload.Connected);
|
||||
Assert.Equal("user@example.test", payload.GmailAddress);
|
||||
Assert.Equal("list-messages", payload.LastSyncMode);
|
||||
Assert.Equal("custom-query", payload.LastSyncSource);
|
||||
Assert.Equal("error", payload.LastSyncStatus);
|
||||
Assert.Equal("Token refresh failed", payload.LastSyncError);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Import_thread_rejects_missing_message_ids()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user