[UX] #599 separate database preparation from settings

This commit is contained in:
devmrko
2026-06-30 20:29:46 +09:00
parent 699a1ac127
commit 2f67587b40
6 changed files with 257 additions and 144 deletions

View File

@@ -113,6 +113,23 @@ class GuidedFlowTemplateTest {
.contains("기술 태그 비교 예시");
}
@Test
void connectionSettingsAreSeparatedFromDatabasePreparation() throws IOException {
String settings = template("settings.html");
String database = template("settings-database.html");
assertThat(settings)
.contains("연결 설정")
.contains("/settings/database")
.doesNotContain("action=\"/settings/database/initialize\"");
assertThat(database)
.contains("DB 준비 상태")
.contains("/settings/database/initialize")
.contains("확인 문구 입력")
.contains("DB 준비 실행")
.doesNotContain("action=\"/settings/schema/initialize\"");
}
@Test
void effectiveMatrixStartsWithOneUserAndKeepsGroupAndRoleAsSecondaryViews() throws IOException {
String html = template("effective-matrix.html");

View File

@@ -0,0 +1,43 @@
package com.cloudhandson.vpdbackoffice.web;
import static org.assertj.core.api.Assertions.assertThat;
import java.nio.file.Path;
import java.util.Locale;
import org.junit.jupiter.api.Test;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring6.SpringTemplateEngine;
import org.thymeleaf.templateresolver.FileTemplateResolver;
class SettingsTemplateRenderTest {
@Test
void rendersConnectionAndDatabasePreparationPagesSeparately() {
var resolver = new FileTemplateResolver();
resolver.setPrefix(Path.of("src/main/resources/templates").toAbsolutePath() + "/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML");
resolver.setCacheable(false);
var engine = new SpringTemplateEngine();
engine.setTemplateResolver(resolver);
var context = new Context(Locale.KOREAN);
context.setVariable("_csrf", new CsrfFixture("_csrf", "test-token"));
context.setVariable("ordsBaseUrl", "https://ords.example.test/ords");
String connection = engine.process("settings", context);
String database = engine.process("settings-database", context);
assertThat(connection)
.contains("ORDS Base URL")
.contains("/settings/database")
.doesNotContain("/settings/database/initialize");
assertThat(database)
.contains("DB 준비 상태")
.contains("/settings/database/initialize")
.contains("DB 준비 실행");
}
private record CsrfFixture(String parameterName, String token) {
}
}