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
@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")
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")
@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")
@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")
assertThatJsonFailed("invalid-image-title")
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())
+ }
+
}