feat(cv): redesign document editing with revision-safe letters and writing tools
This commit is contained in:
@@ -39,6 +39,13 @@ public sealed class BackupControllerTests
|
||||
var otherJob = new JobApplication { JobTitle = "Other tenant role", OwnerUserId = "user-2" };
|
||||
db.JobApplications.AddRange(job, otherJob);
|
||||
await db.SaveChangesAsync();
|
||||
db.CoverLetterVersions.AddRange(
|
||||
new CoverLetterVersion { OwnerUserId = "user-1", JobApplicationId = job.Id, Version = 1, Text = "Original letter", Source = CoverLetterSources.Manual },
|
||||
new CoverLetterVersion { OwnerUserId = "user-1", JobApplicationId = job.Id, Version = 2, Text = "Approved letter", Source = CoverLetterSources.Ai, AiAction = "improve", DocumentSettingsJson = "{\"senderName\":\"Historical sender\"}" },
|
||||
new CoverLetterVersion { OwnerUserId = "user-2", JobApplicationId = otherJob.Id, Version = 1, Text = "Other tenant private letter" });
|
||||
db.SubmittedApplicationPackages.AddRange(
|
||||
new SubmittedApplicationPackage { OwnerUserId = "user-1", JobApplicationId = job.Id, Version = 1, CoverLetterText = "Frozen letter", RenderedCoverLetterHtml = "<p>Exact frozen HTML</p>", CoverLetterDocumentSettingsJson = "{\"subject\":\"Frozen subject\"}" },
|
||||
new SubmittedApplicationPackage { OwnerUserId = "user-2", JobApplicationId = otherJob.Id, Version = 1, RenderedCoverLetterHtml = "Other tenant private frozen HTML" });
|
||||
db.EmailSendAttempts.Add(new EmailSendAttempt
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
@@ -95,6 +102,17 @@ public sealed class BackupControllerTests
|
||||
var protectedText = System.Text.Encoding.UTF8.GetString(file.FileContents);
|
||||
var json = Convert.FromBase64String(provider.CreateProtector("JobTrackerApi.Backup.v1").Unprotect(protectedText));
|
||||
using var document = System.Text.Json.JsonDocument.Parse(json);
|
||||
var letters = document.RootElement.GetProperty("Data").GetProperty("CoverLetterVersions").EnumerateArray().ToArray();
|
||||
Assert.Equal(2, letters.Length);
|
||||
Assert.Equal("Original letter", letters[0].GetProperty("Text").GetString());
|
||||
Assert.Equal(2, letters[1].GetProperty("Version").GetInt32());
|
||||
Assert.Equal("Approved letter", letters[1].GetProperty("Text").GetString());
|
||||
Assert.Equal(CoverLetterSources.Ai, letters[1].GetProperty("Source").GetString());
|
||||
Assert.Equal("improve", letters[1].GetProperty("AiAction").GetString());
|
||||
Assert.Equal("{\"senderName\":\"Historical sender\"}", letters[1].GetProperty("DocumentSettingsJson").GetString());
|
||||
var frozen = Assert.Single(document.RootElement.GetProperty("Data").GetProperty("SubmittedApplicationPackages").EnumerateArray());
|
||||
Assert.Equal("<p>Exact frozen HTML</p>", frozen.GetProperty("RenderedCoverLetterHtml").GetString());
|
||||
Assert.Equal("{\"subject\":\"Frozen subject\"}", frozen.GetProperty("CoverLetterDocumentSettingsJson").GetString());
|
||||
var attempt = Assert.Single(document.RootElement.GetProperty("Data").GetProperty("EmailSendAttempts").EnumerateArray());
|
||||
Assert.Equal("gmail", attempt.GetProperty("Provider").GetString());
|
||||
Assert.Equal("sent", attempt.GetProperty("Status").GetString());
|
||||
|
||||
Reference in New Issue
Block a user