X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FEditAlbumAjaxPageTest.kt;h=850cc9dfbb07b90333c73b04ee0645373ed7f2e6;hp=2d1836676247392895157b28330ae151891c3235;hb=2ab560633c24940fa49bdaf569635dd673ad7b19;hpb=b6dc376162d13042d430c0cdccc7e53c92e4a690 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/ajax/EditAlbumAjaxPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/ajax/EditAlbumAjaxPageTest.kt index 2d18366..850cc9d 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/ajax/EditAlbumAjaxPageTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/ajax/EditAlbumAjaxPageTest.kt @@ -1,14 +1,14 @@ package net.pterodactylus.sone.web.ajax -import net.pterodactylus.sone.data.Album -import net.pterodactylus.sone.data.Album.Modifier.AlbumTitleMustNotBeEmpty import net.pterodactylus.sone.data.Sone import net.pterodactylus.sone.data.impl.AlbumImpl -import net.pterodactylus.sone.test.deepMock +import net.pterodactylus.sone.test.getInstance 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 /** @@ -17,63 +17,56 @@ import org.junit.Test class EditAlbumAjaxPageTest : JsonPageTest("editAlbum.ajax", pageSupplier = ::EditAlbumAjaxPage) { private val sone = mock() - private val localSone = mock().apply { whenever(isLocal).thenReturn(true) } - private val album = mock().apply { whenever(id).thenReturn("album-id") } + private val album = AlbumImpl(sone, "album-id") @Test fun `request without album results in invalid-album-id`() { - assertThat(json.isSuccess, equalTo(false)) - assertThat(json.error, equalTo("invalid-album-id")) + assertThatJsonFailed("invalid-album-id") } @Test fun `request with non-local album results in not-authorized`() { - whenever(album.sone).thenReturn(sone) addAlbum(album) addRequestParameter("album", "album-id") - assertThat(json.isSuccess, equalTo(false)) - assertThat(json.error, equalTo("not-authorized")) + assertThatJsonFailed("not-authorized") } @Test fun `request with moveLeft moves album to the left`() { - whenever(album.sone).thenReturn(localSone) - val swappedAlbum = mock().apply { whenever(id).thenReturn("swapped") } - val parentAlbum = mock() - whenever(parentAlbum.moveAlbumUp(album)).thenReturn(swappedAlbum) - whenever(album.parent).thenReturn(parentAlbum) + setupLocalSone() + AlbumImpl(sone).also { + it.addAlbum(AlbumImpl(sone, "swapped")) + it.addAlbum(album) + } addAlbum(album) addRequestParameter("album", "album-id") addRequestParameter("moveLeft", "true") - assertThat(json.isSuccess, equalTo(true)) - assertThat(json["sourceAlbumId"].asText(), equalTo("album-id")) - assertThat(json["destinationAlbumId"].asText(), equalTo("swapped")) + assertThatJsonIsSuccessful() + assertThat(json["sourceAlbumId"]?.asText(), equalTo("album-id")) + assertThat(json["destinationAlbumId"]?.asText(), equalTo("swapped")) } @Test fun `request with moveRight moves album to the right`() { - whenever(album.sone).thenReturn(localSone) - val swappedAlbum = mock().apply { whenever(id).thenReturn("swapped") } - val parentAlbum = mock() - whenever(parentAlbum.moveAlbumDown(album)).thenReturn(swappedAlbum) - whenever(album.parent).thenReturn(parentAlbum) + setupLocalSone() + AlbumImpl(sone).also { + it.addAlbum(album) + it.addAlbum(AlbumImpl(sone, "swapped")) + } addAlbum(album) addRequestParameter("album", "album-id") addRequestParameter("moveRight", "true") - assertThat(json.isSuccess, equalTo(true)) - assertThat(json["sourceAlbumId"].asText(), equalTo("album-id")) - assertThat(json["destinationAlbumId"].asText(), equalTo("swapped")) + assertThatJsonIsSuccessful() + assertThat(json["sourceAlbumId"]?.asText(), equalTo("album-id")) + assertThat(json["destinationAlbumId"]?.asText(), equalTo("swapped")) } @Test fun `request with missing title results in invalid-title`() { - whenever(album.sone).thenReturn(localSone) - whenever(album.modify()).thenReturn(deepMock()) - whenever(album.modify().setTitle("")).thenThrow(AlbumTitleMustNotBeEmpty::class.java) + setupLocalSone() addAlbum(album) addRequestParameter("album", "album-id") - assertThat(json.isSuccess, equalTo(false)) - assertThat(json.error, equalTo("invalid-album-title")) + assertThatJsonFailed("invalid-album-title") } @Test @@ -84,10 +77,19 @@ class EditAlbumAjaxPageTest : JsonPageTest("editAlbum.ajax", pageSupplier = ::Ed addRequestParameter("title", "new title") addRequestParameter("description", "foo http://127.0.0.1:8888/KSK@foo.html link") addRequestHeader("Host", "127.0.0.1:8888") - assertThat(json.isSuccess, equalTo(true)) - assertThat(json["albumId"].asText(), equalTo("album-id")) - assertThat(json["title"].asText(), equalTo("new title")) - assertThat(json["description"].asText(), equalTo("foo KSK@foo.html link")) + assertThatJsonIsSuccessful() + assertThat(json["albumId"]?.asText(), equalTo("album-id")) + assertThat(json["title"]?.asText(), equalTo("new title")) + assertThat(json["description"]?.asText(), equalTo("foo KSK@foo.html link")) + } + + @Test + fun `page can be created by dependency injection`() { + assertThat(baseInjector.getInstance(), notNullValue()) + } + + private fun setupLocalSone() { + whenever(sone.isLocal).thenReturn(true) } }