fix(rd21): guard career and job saves with durable revisions

This commit is contained in:
cesnimda
2026-10-23 08:07:23 +02:00
parent 8f2cad67f7
commit 12f342c09c
32 changed files with 1185 additions and 277 deletions
@@ -28,7 +28,7 @@ public sealed class JobApplicationsEndpointBehaviorTests
await db.SaveChangesAsync();
var controller = CreateController(db, "user-1");
var result = await controller.SaveApplicationDrafts(job.Id, new SaveApplicationDraftsRequest(" Cover letter body ", " Notes body ", null), CancellationToken.None);
var result = await controller.SaveApplicationDrafts(job.Id, new SaveApplicationDraftsRequest(" Cover letter body ", " Notes body ", null, ExpectedVersion: job.Version), CancellationToken.None);
Assert.IsType<NoContentResult>(result);
var saved = await db.JobApplications.FirstAsync();
@@ -272,7 +272,8 @@ public sealed class JobApplicationsEndpointBehaviorTests
JobUrl: null,
DateApplied: null,
FeedbackRequestedAt: null,
StatusChangedAt: null);
StatusChangedAt: null,
ExpectedVersion: job.Version);
var result = await controller.Update(job.Id, request, CancellationToken.None);
@@ -340,7 +341,8 @@ public sealed class JobApplicationsEndpointBehaviorTests
JobUrl: null,
DateApplied: null,
FeedbackRequestedAt: null,
StatusChangedAt: null);
StatusChangedAt: null,
ExpectedVersion: job.Version);
Assert.IsType<NoContentResult>(await controller.Update(job.Id, request, CancellationToken.None));
@@ -348,7 +350,7 @@ public sealed class JobApplicationsEndpointBehaviorTests
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 + " " };
request = request with { Description = request.Description + " ", ExpectedVersion = job.Version };
Assert.IsType<NoContentResult>(await controller.Update(job.Id, request, CancellationToken.None));
summarizer.Verify(service => service.SummarizeAsync(It.IsAny<string>(), 160, 60), Times.Once);
}