fix(admin): show template language status in editor

Center action controls and adjust template editor field heights.

Ref: IT-1601
This commit is contained in:
2026-10-17 23:14:53 +03:00
parent 7b640fe99e
commit 5a465d7257
6 changed files with 63 additions and 12 deletions
@@ -8,6 +8,37 @@ namespace HrynCo.NotificationService.Web.IntegrationTests;
public sealed class TemplateCatalogPresentationTests(TemplateDatabaseFixture fixture) : IClassFixture<TemplateDatabaseFixture>
{
[Fact]
public async Task EditorTabsShowSavedVersionsAfterInvalidUnsavedChanges()
{
var connection = await fixture.CreateDatabaseAsync();
await using var app = new TemplateWebApplicationFactory(connection);
using var scope = app.Services.CreateScope();
var service = (await scope.ServiceProvider.GetRequiredService<INotificationServiceRepository>().GetAllAsync()).Single();
var versions = scope.ServiceProvider.GetRequiredService<IEmailTemplateRepository>();
await versions.AddAsync(new EmailTemplate
{
ServiceName = service.Name, Key = "TabStatus", LanguageCode = "en",
Subject = "Saved", HtmlBody = "Saved", TextBody = "Saved"
});
var definition = (await scope.ServiceProvider.GetRequiredService<IEmailTemplateDefinitionRepository>()
.GetDefinitionAsync(service.Name, "TabStatus"))!;
using var client = app.CreateClient(new() { AllowAutoRedirect = false });
var baseUrl = $"/admin/services/{service.Id}/templates";
var html = await client.GetStringAsync($"{baseUrl}/{definition.Id}");
Assert.Matches("(?s)<span>en</span>\\s*<span class=\"template-language-status template-language-present\">Present</span>", html);
Assert.Matches("(?s)<span>uk</span>\\s*<span class=\"template-language-status template-language-missing\">Missing</span>", html);
var fields = TemplateEditorTestFields.Read(html);
TemplateEditorTestFields.SetLanguage(fields, "uk", "Unsaved", "", "");
fields["Languages[0].IsPresent"] = "false";
var response = await client.PostAsync(baseUrl + "/save", new FormUrlEncodedContent(fields));
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var invalidHtml = await response.Content.ReadAsStringAsync();
Assert.Matches("(?s)<span>en</span>\\s*<span class=\"template-language-status template-language-present\">Present</span>", invalidHtml);
Assert.Matches("(?s)<span>uk</span>\\s*<span class=\"template-language-status template-language-missing\">Missing</span>", invalidHtml);
}
[Fact]
public async Task CatalogStatusesUseExactCodes_AndEmptyDefinitionsShowEveryLanguageMissing()
{