X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FGetLinkedElementAjaxPageTest.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FGetLinkedElementAjaxPageTest.kt;h=ea3be1af58eaed61aec19d6116dfd64f7bdcdce7;hp=0000000000000000000000000000000000000000;hb=0f0f4c89310e912c996b766ebe170ecb0f20ddf0;hpb=5dab84b3d65734bd58dbe00d9ac951ca3ab2c532 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/ajax/GetLinkedElementAjaxPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/ajax/GetLinkedElementAjaxPageTest.kt new file mode 100644 index 0000000..ea3be1a --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/web/ajax/GetLinkedElementAjaxPageTest.kt @@ -0,0 +1,60 @@ +package net.pterodactylus.sone.web.ajax + +import com.fasterxml.jackson.databind.JsonNode +import net.pterodactylus.sone.core.LinkedElement +import net.pterodactylus.sone.template.LinkedElementRenderFilter +import net.pterodactylus.sone.test.mock +import net.pterodactylus.sone.test.whenever +import net.pterodactylus.sone.utils.jsonArray +import net.pterodactylus.util.template.TemplateContext +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers +import org.hamcrest.Matchers.equalTo +import org.junit.Test +import org.mockito.ArgumentMatchers + +/** + * Unit test for [GetLinkedElementAjaxPage]. + */ +class GetLinkedElementAjaxPageTest: JsonPageTest() { + + private val linkedElementRenderFilter = mock() + override var page: JsonPage = GetLinkedElementAjaxPage(webInterface, elementLoader, linkedElementRenderFilter) + + @Test + fun `page returns correct path`() { + assertThat(page.path, equalTo("getLinkedElement.ajax")) + } + + @Test + fun `page does not require login`() { + assertThat(page.requiresLogin(), equalTo(false)) + } + + @Test + fun `page does not require form password`() { + assertThat(page.needsFormPassword(), equalTo(false)) + } + + @Test + fun `only loaded linked elements are returned`() { + addRequestParameter("elements", jsonArray("KSK@foo.png", "KSK@foo.jpg", "KSK@foo.html").toString()) + addLinkedElement("KSK@foo.png", true, false) + addLinkedElement("KSK@foo.jpg", false, false) + addLinkedElement("KSK@foo.html", false, true) + whenever(linkedElementRenderFilter.format(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any())).thenAnswer { invocation -> + when (invocation.getArgument(1).link) { + "KSK@foo.jpg" -> "jpeg-image" + "KSK@foo.html" -> "html-page" + else -> null + } + } + assertThat(json.get("linkedElements").elements().asSequence().map { it.toMap() }.toList(), Matchers.containsInAnyOrder( + mapOf("link" to "KSK@foo.jpg", "html" to "jpeg-image"), + mapOf("link" to "KSK@foo.html", "html" to "html-page") + )) + } + + private fun JsonNode.toMap() = fields().asSequence().map { it.key!! to if (it.value.isNull) null else it.value.asText()!! }.toMap() + +}