🔥 Remove unnecessary imports
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / EditImageAjaxPageTest.kt
index 126fa83..08b8f45 100644 (file)
@@ -1,17 +1,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,34 +31,30 @@ 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<Image>()
                val sone = mock<Sone>()
-               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<Image>().apply { whenever(id).thenReturn("image-id") }
                val sone = mock<Sone>().apply { whenever(isLocal).thenReturn(true) }
-               whenever(image.sone).thenReturn(sone)
-               val swapped = mock<Image>().apply { whenever(id).thenReturn("swapped") }
-               val album = mock<Album>()
-               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))
+               assertThatJsonIsSuccessful()
                assertThat(json["sourceImageId"]?.asText(), equalTo("image-id"))
                assertThat(json["destinationImageId"]?.asText(), equalTo("swapped"))
                verify(core).touchConfiguration()
@@ -64,17 +62,16 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
 
        @Test
        fun `moving an image to the right returns the correct values`() {
-               val image = mock<Image>().apply { whenever(id).thenReturn("image-id") }
                val sone = mock<Sone>().apply { whenever(isLocal).thenReturn(true) }
-               whenever(image.sone).thenReturn(sone)
-               val swapped = mock<Image>().apply { whenever(id).thenReturn("swapped") }
-               val album = mock<Album>()
-               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))
+               assertThatJsonIsSuccessful()
                assertThat(json["sourceImageId"]?.asText(), equalTo("image-id"))
                assertThat(json["destinationImageId"]?.asText(), equalTo("swapped"))
                verify(core).touchConfiguration()
@@ -82,13 +79,11 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
 
        @Test
        fun `request with empty title results in invalid-image-title`() {
-               val image = mock<Image>().apply { whenever(id).thenReturn("image-id") }
                val sone = mock<Sone>().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,7 +101,7 @@ 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))
+               assertThatJsonIsSuccessful()
                assertThat(json["title"]?.asText(), equalTo("some title"))
                assertThat(json["description"]?.asText(), equalTo("some KSK@foo link"))
                assertThat(json["parsedDescription"]?.asText(), equalTo("rendered description"))
@@ -116,4 +111,13 @@ class EditImageAjaxPageTest : JsonPageTest("editImage.ajax") {
                assertThat(parameterCaptor.value["sone"], equalTo<Any>(sone))
        }
 
+       @Test
+       fun `page can be created by dependency injection`() {
+               assertThat(baseInjector.createChildInjector(
+                               ParserFilter::class.isProvidedByMock(),
+                               ShortenFilter::class.isProvidedByMock(),
+                               RenderFilter::class.isProvidedByMock()
+               ).getInstance<EditImageAjaxPage>(), notNullValue())
+       }
+
 }