X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FEditImageAjaxPageTest.kt;h=e63bb8a5da4880c4bb81fcc3f80b21c8342c9073;hp=6a3d89ca12662348aa4b74d85fab1a4b8abb01f4;hb=2ab560633c24940fa49bdaf569635dd673ad7b19;hpb=51b58fad3a00b2d9cae45345ac066e89233ba0b5 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/ajax/EditImageAjaxPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/ajax/EditImageAjaxPageTest.kt index 6a3d89c..e63bb8a 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/ajax/EditImageAjaxPageTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/ajax/EditImageAjaxPageTest.kt @@ -3,15 +3,19 @@ package net.pterodactylus.sone.web.ajax import net.pterodactylus.sone.data.Album import net.pterodactylus.sone.data.Image import net.pterodactylus.sone.data.Sone -import net.pterodactylus.sone.data.impl.ImageImpl +import net.pterodactylus.sone.data.impl.* import net.pterodactylus.sone.template.ParserFilter import net.pterodactylus.sone.template.RenderFilter import net.pterodactylus.sone.template.ShortenFilter import net.pterodactylus.sone.test.argumentCaptor +import net.pterodactylus.sone.test.getInstance +import net.pterodactylus.sone.test.isProvidedByMock import net.pterodactylus.sone.test.mock import net.pterodactylus.sone.test.whenever +import net.pterodactylus.sone.web.baseInjector import org.hamcrest.MatcherAssert.assertThat import org.hamcrest.Matchers.equalTo +import org.hamcrest.Matchers.notNullValue import org.junit.Test import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.eq @@ -29,66 +33,59 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") { @Test fun `request without image results in invalid-image-id`() { - assertThat(json.isSuccess, equalTo(false)) - assertThat(json.error, equalTo("invalid-image-id")) + assertThatJsonFailed("invalid-image-id") } @Test fun `request with non-local image results in not-authorized`() { - val image = mock() val sone = mock() - whenever(image.sone).thenReturn(sone) + val image = ImageImpl().modify().setSone(sone).update() addImage(image, "image-id") addRequestParameter("image", "image-id") - assertThat(json.isSuccess, equalTo(false)) - assertThat(json.error, equalTo("not-authorized")) + assertThatJsonFailed("not-authorized") } @Test fun `moving an image to the left returns the correct values`() { - val image = mock().apply { whenever(id).thenReturn("image-id") } val sone = mock().apply { whenever(isLocal).thenReturn(true) } - whenever(image.sone).thenReturn(sone) - val swapped = mock().apply { whenever(id).thenReturn("swapped") } - val album = mock() - whenever(album.moveImageUp(image)).thenReturn(swapped) - whenever(image.album).thenReturn(album) + val image = ImageImpl("image-id").modify().setSone(sone).update() + AlbumImpl(sone).also { + it.addImage(ImageImpl("swapped").modify().setSone(sone).update()) + it.addImage(image) + } addImage(image) addRequestParameter("image", "image-id") addRequestParameter("moveLeft", "true") - assertThat(json.isSuccess, equalTo(true)) - assertThat(json["sourceImageId"].asText(), equalTo("image-id")) - assertThat(json["destinationImageId"].asText(), equalTo("swapped")) + assertThatJsonIsSuccessful() + assertThat(json["sourceImageId"]?.asText(), equalTo("image-id")) + assertThat(json["destinationImageId"]?.asText(), equalTo("swapped")) verify(core).touchConfiguration() } @Test fun `moving an image to the right returns the correct values`() { - val image = mock().apply { whenever(id).thenReturn("image-id") } val sone = mock().apply { whenever(isLocal).thenReturn(true) } - whenever(image.sone).thenReturn(sone) - val swapped = mock().apply { whenever(id).thenReturn("swapped") } - val album = mock() - whenever(album.moveImageDown(image)).thenReturn(swapped) - whenever(image.album).thenReturn(album) + val image = ImageImpl("image-id").modify().setSone(sone).update() + AlbumImpl(sone).also { + it.addImage(image) + it.addImage(ImageImpl("swapped").modify().setSone(sone).update()) + } addImage(image) addRequestParameter("image", "image-id") addRequestParameter("moveRight", "true") - assertThat(json.isSuccess, equalTo(true)) - assertThat(json["sourceImageId"].asText(), equalTo("image-id")) - assertThat(json["destinationImageId"].asText(), equalTo("swapped")) + assertThatJsonIsSuccessful() + assertThat(json["sourceImageId"]?.asText(), equalTo("image-id")) + assertThat(json["destinationImageId"]?.asText(), equalTo("swapped")) verify(core).touchConfiguration() } @Test fun `request with empty title results in invalid-image-title`() { - val image = mock().apply { whenever(id).thenReturn("image-id") } val sone = mock().apply { whenever(isLocal).thenReturn(true) } - whenever(image.sone).thenReturn(sone) + val image = ImageImpl("image-id").modify().setSone(sone).update() addImage(image) addRequestParameter("image", "image-id") - assertThat(json.isSuccess, equalTo(false)) - assertThat(json.error, equalTo("invalid-image-title")) + assertThatJsonFailed("invalid-image-title") } @Test @@ -106,14 +103,23 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") { addRequestParameter("title", "some title") addRequestParameter("description", "some http://127.0.0.1:8888/KSK@foo link") addRequestHeader("Host", "127.0.0.1:8888") - assertThat(json.isSuccess, equalTo(true)) - assertThat(json["title"].asText(), equalTo("some title")) - assertThat(json["description"].asText(), equalTo("some KSK@foo link")) - assertThat(json["parsedDescription"].asText(), equalTo("rendered description")) + assertThatJsonIsSuccessful() + assertThat(json["title"]?.asText(), equalTo("some title")) + assertThat(json["description"]?.asText(), equalTo("some KSK@foo link")) + assertThat(json["parsedDescription"]?.asText(), equalTo("rendered description")) verify(core).touchConfiguration() val parameterCaptor = argumentCaptor>() verify(parserFilter).format(any(), any(), parameterCaptor.capture()) assertThat(parameterCaptor.value["sone"], equalTo(sone)) } + @Test + fun `page can be created by dependency injection`() { + assertThat(baseInjector.createChildInjector( + ParserFilter::class.isProvidedByMock(), + ShortenFilter::class.isProvidedByMock(), + RenderFilter::class.isProvidedByMock() + ).getInstance(), notNullValue()) + } + }