package org.learning.by.example.reactive.microservices.routers;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.learning.by.example.reactive.microservices.test.BasicIntegrationTest;
import org.learning.by.example.reactive.microservices.test.tags.IntegrationTest;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.core.IsNot.not;
@IntegrationTest
@DisplayName(" StaticRouter Integration Tests")
class StaticRouterTests extends BasicIntegrationTest {
private static final String STATIC_PATH = "/index.html";
private static final String DEFAULT_TITLE = "Swagger UI";
private static final String TITLE_TAG = "title";
@BeforeEach
void setup() {
super.bindToRouterFunction(StaticRouter.doRoute());
}
@BeforeAll
static void setupAll() {
final StaticRouter staticRouter = new StaticRouter();
}
@Test
void staticContentTest() {
String result = get(builder -> builder.path(STATIC_PATH).build());
assertThat(result, not(isEmptyOrNullString()));
verifyTitleIs(result, DEFAULT_TITLE);
}
private void verifyTitleIs(final String html, final String title) {
Document doc = Jsoup.parse(html);
Element element = doc.head().getElementsByTag(TITLE_TAG).get(0);
String text = element.text();
assertThat(text, is(title));
}
}