@Override
    public Mono<String> render(String template, Map<String, Object> model) {
        var context = new Context(Locale.getDefault(), model);
        var globalAttributeMono = getBasicSetting()
            .doOnNext(basic -> {
                var site = new HashMap<>();
                site.put("title", basic.getTitle());
                site.put("logo", basic.getLogo());
                site.put("subtitle", basic.getSubtitle());
                site.put("url", externalUrlSupplier.getRaw());
                context.setVariable("site", site);
            });
        return Mono.when(globalAttributeMono)
            .then(Mono.fromSupplier(() ->
                TEMPLATE_ENGINE.process(defaultString(template), context)));
    }
@Test
    void render() {
        final String template = """
            亲爱的博主

              [(${replier})] 在评论“[(${isQuoteReply ? quoteContent : commentContent})]”中回复了您，
              以下是回复的具体内容：
              
              [(${content})]

            [(${site.title})]
            [(${site.url})]
            祝好！
            查看原文：[(${commentSubjectUrl})]
            """;
        final var model = Map.<String, Object>of(
            "replier", "guqing",
            "isQuoteReply", true,
            "quoteContent", "这是引用的内容",
            "commentContent", "这是评论的内容",
            "commentSubjectUrl", "/archives/1",
            "content", "这是回复的内容"
        );

        var basic = new SystemSetting.Basic();
        basic.setTitle("Halo");
        basic.setLogo("https://halo.run/logo");
        basic.setSubtitle("Halo");
        when(environmentFetcher.fetch(eq(SystemSetting.Basic.GROUP), eq(SystemSetting.Basic.class)))
            .thenReturn(Mono.just(basic));

        templateRender.render(template, model)
            .as(StepVerifier::create)
            .consumeNextWith(render -> {
                assertThat(render).isEqualTo("""
                    亲爱的博主

                      guqing 在评论“这是引用的内容”中回复了您，
                      以下是回复的具体内容：
                      
                      这是回复的内容
   
                    Halo
                    http://localhost:8090
                    祝好！
                    查看原文：/archives/1
                    """);
            })
            .verifyComplete();

        verify(environmentFetcher).fetch(eq(SystemSetting.Basic.GROUP),
            eq(SystemSetting.Basic.class));
        verify(externalUrlSupplier).getRaw();
    }
}