private Mono<ServerResponse> fetchThemeSetting(ServerRequest request) {
        return themeNameInPathVariableOrActivated(request)
            .flatMap(name -> client.fetch(Theme.class, name))
            .mapNotNull(theme -> theme.getSpec().getSettingName())
            .flatMap(settingName -> client.fetch(Setting.class, settingName))
            .flatMap(setting -> ServerResponse.ok().bodyValue(setting));
    }
@Test
    void fetchThemeSetting() {
        Theme theme = new Theme();
        theme.setMetadata(new Metadata());
        theme.getMetadata().setName("fake");
        theme.setSpec(new Theme.ThemeSpec());
        theme.getSpec().setSettingName("fake-setting");

        when(client.fetch(eq(Setting.class), eq("fake-setting")))
            .thenReturn(Mono.just(new Setting()));

        when(client.fetch(eq(Theme.class), eq("fake"))).thenReturn(Mono.just(theme));
        webTestClient.get()
            .uri("/themes/fake/setting")
            .exchange()
            .expectStatus().isOk();

        verify(client).fetch(eq(Setting.class), eq("fake-setting"));
        verify(client).fetch(eq(Theme.class), eq("fake"));
    }