fix(analysis): refresh stale job summaries
This commit is contained in:
@@ -292,11 +292,79 @@ public sealed class JobApplicationsEndpointBehaviorTests
|
||||
Assert.Equal("NO", opportunity.CountryCode);
|
||||
}
|
||||
|
||||
private static JobApplicationsController CreateController(JobTrackerContext db, string userId)
|
||||
[Fact]
|
||||
public async Task Update_refreshes_analysis_only_when_the_advert_materially_changes()
|
||||
{
|
||||
await using var db = CreateDb();
|
||||
var company = new Company { Name = "Acme", OwnerUserId = "user-1" };
|
||||
db.Companies.Add(company);
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
var originalDescription = "Build and operate C# services with SQL, Docker and Azure. Work with product teams to deliver reliable APIs.";
|
||||
var job = new JobApplication
|
||||
{
|
||||
JobTitle = "Backend Developer",
|
||||
CompanyId = company.Id,
|
||||
OwnerUserId = "user-1",
|
||||
Description = originalDescription,
|
||||
ShortSummary = "Old analysis",
|
||||
};
|
||||
db.JobApplications.Add(job);
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
var summarizer = new Mock<ISummarizerService>();
|
||||
summarizer.Setup(service => service.SummarizeAsync(It.IsAny<string>(), 160, 60)).ReturnsAsync("Fresh analysis");
|
||||
var user = new ApplicationUser { Id = "user-1", UserName = "user", AiEnabled = true };
|
||||
var controller = CreateController(db, "user-1", summarizer, user, new[] { "Premium" });
|
||||
var request = new UpdateJobApplicationRequest(
|
||||
JobTitle: "Backend Developer",
|
||||
CompanyId: company.Id,
|
||||
Status: "Applied",
|
||||
ResponseReceived: false,
|
||||
ResponseDate: null,
|
||||
Location: null,
|
||||
Salary: null,
|
||||
SalaryMin: null,
|
||||
SalaryMax: null,
|
||||
SalaryCurrency: null,
|
||||
SalaryPeriod: null,
|
||||
NextAction: null,
|
||||
FollowUpAt: null,
|
||||
Notes: null,
|
||||
Description: "Lead a Kubernetes platform team building Go services for machine-learning workloads and distributed event streaming.",
|
||||
TranslatedDescription: null,
|
||||
DescriptionLanguage: "en",
|
||||
Tags: null,
|
||||
Deadline: null,
|
||||
CoverLetterText: null,
|
||||
JobUrl: null,
|
||||
DateApplied: null,
|
||||
FeedbackRequestedAt: null,
|
||||
StatusChangedAt: null);
|
||||
|
||||
Assert.IsType<NoContentResult>(await controller.Update(job.Id, request, CancellationToken.None));
|
||||
|
||||
Assert.Equal("Fresh analysis", (await db.JobApplications.SingleAsync()).ShortSummary);
|
||||
summarizer.Verify(service => service.SummarizeAsync(It.IsAny<string>(), 160, 60), Times.Once);
|
||||
Assert.Contains(await db.JobEvents.ToListAsync(), item => item.Type == "AiRefreshed" && item.Note!.Contains("automatically"));
|
||||
|
||||
request = request with { Description = request.Description + " " };
|
||||
Assert.IsType<NoContentResult>(await controller.Update(job.Id, request, CancellationToken.None));
|
||||
summarizer.Verify(service => service.SummarizeAsync(It.IsAny<string>(), 160, 60), Times.Once);
|
||||
}
|
||||
|
||||
private static JobApplicationsController CreateController(
|
||||
JobTrackerContext db,
|
||||
string userId,
|
||||
Mock<ISummarizerService>? summarizerOverride = null,
|
||||
ApplicationUser? lookupUser = null,
|
||||
IReadOnlyList<string>? roles = null)
|
||||
{
|
||||
var summarizer = summarizerOverride ?? new Mock<ISummarizerService>();
|
||||
summarizer.Setup(x => x.SummarizeSectionAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>())).ReturnsAsync("generated text");
|
||||
var users = CreateUserManager();
|
||||
var users = TestHostFactory.CreateUserManager(lookupUser);
|
||||
if (lookupUser is not null)
|
||||
users.Setup(manager => manager.GetRolesAsync(lookupUser)).ReturnsAsync(roles?.ToList() ?? new List<string>());
|
||||
|
||||
var controller = new JobApplicationsController(db, summarizer.Object, users.Object);
|
||||
controller.ControllerContext = new ControllerContext
|
||||
@@ -312,11 +380,6 @@ public sealed class JobApplicationsEndpointBehaviorTests
|
||||
return controller;
|
||||
}
|
||||
|
||||
private static Mock<Microsoft.AspNetCore.Identity.UserManager<ApplicationUser>> CreateUserManager()
|
||||
{
|
||||
return TestHostFactory.CreateUserManager();
|
||||
}
|
||||
|
||||
private static JobTrackerContext CreateDb()
|
||||
{
|
||||
return TestHostFactory.CreateInMemoryDb();
|
||||
|
||||
Reference in New Issue
Block a user