using JobTrackerApi.Controllers; using JobTrackerApi.Models; using JobTrackerApi.Services; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; namespace JobTrackerApi.Tests; public sealed class GmailControllerTests { [Fact] public async Task Import_thread_rejects_missing_message_ids() { var controller = new GmailController(Mock.Of(), null!, BuildConfig()) { ControllerContext = new Microsoft.AspNetCore.Mvc.ControllerContext { HttpContext = new Microsoft.AspNetCore.Http.DefaultHttpContext { User = new System.Security.Claims.ClaimsPrincipal(new System.Security.Claims.ClaimsIdentity(new[] { new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.NameIdentifier, "user-1") }, "test")) } } }; var result = await controller.ImportThread(new GmailController.ImportGmailThreadRequest(1, "thread-1", Array.Empty()), CancellationToken.None); var badRequest = Assert.IsType(result.Result); Assert.Equal("At least one messageId is required.", badRequest.Value); } private static Microsoft.Extensions.Configuration.IConfiguration BuildConfig() { return new Microsoft.Extensions.Configuration.ConfigurationBuilder() .AddInMemoryCollection(new Dictionary()) .Build(); } }