using JobTrackerApi.Models; using JobTrackerApi.Services; using System.Text.Json; using Xunit; namespace JobTrackerApi.Tests; public sealed class CoverLetterDocumentContractTests { [Fact] public void Matching_letter_themes_use_the_CV_design_without_rewriting_legacy_output_or_body() { var renderer = new CoverLetterDocumentRenderer(); foreach (var theme in CvThemeCatalog.Themes) { var legacy = new CoverLetterDocumentSettings { ThemeId = theme.Id, SenderName = "Reviewed sender" }; var original = renderer.Render("Reviewed body", legacy).Html; var revised = CoverLetterDocumentSettingsJson.Deserialize("{\"themeId\":\"" + theme.Id + "\",\"designVersion\":2,\"senderName\":\"Reviewed sender\"}"); var html = renderer.Render("Reviewed body", revised).Html; Assert.Contains("letter-theme-" + theme.Id, html); Assert.Contains("Reviewed sender", html); Assert.Contains("Reviewed body", html); Assert.Contains("\"designVersion\":2", CoverLetterDocumentSettingsJson.Serialize(revised)); Assert.Contains(theme.Accent, html); Assert.Equal(original, renderer.Render("Reviewed body", CoverLetterDocumentSettingsJson.Deserialize(CoverLetterDocumentSettingsJson.Serialize(legacy))).Html); Assert.DoesNotContain("designVersion", CoverLetterDocumentSettingsJson.Serialize(legacy)); } } [Theory] [InlineData("en", "Cover letter", "Cover letter text")] [InlineData("nb-NO", "Søknadsbrev", "Brevtekst")] public void Empty_optional_details_do_not_create_empty_headings_or_an_unnamed_main_landmark(string language, string title, string bodyLabel) { var html = new CoverLetterDocumentRenderer().Render("Reviewed body", new() { Language = language }).Html; Assert.DoesNotContain("
", html); Assert.DoesNotContain("", html); Assert.Contains($"