X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FDeleteAlbumPageTest.kt;h=9830ffa529ab2687b0831a54dac748e3a9331de0;hp=969a1337231f26674768bb025ee5587ebb78238c;hb=2ab560633c24940fa49bdaf569635dd673ad7b19;hpb=ffd92ca2374c0b2218e583d02e0bdd24b8c110ae diff --git a/src/test/kotlin/net/pterodactylus/sone/web/pages/DeleteAlbumPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/pages/DeleteAlbumPageTest.kt index 969a133..9830ffa 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/pages/DeleteAlbumPageTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/pages/DeleteAlbumPageTest.kt @@ -1,36 +1,29 @@ package net.pterodactylus.sone.web.pages -import net.pterodactylus.sone.data.Album -import net.pterodactylus.sone.data.Sone -import net.pterodactylus.sone.test.mock -import net.pterodactylus.sone.test.whenever -import net.pterodactylus.util.web.Method.POST -import org.hamcrest.MatcherAssert.assertThat -import org.hamcrest.Matchers.equalTo -import org.junit.Before -import org.junit.Test +import net.pterodactylus.sone.data.impl.* +import net.pterodactylus.sone.test.* +import net.pterodactylus.sone.web.* +import net.pterodactylus.sone.web.page.* +import net.pterodactylus.util.web.Method.* +import org.hamcrest.MatcherAssert.* +import org.hamcrest.Matchers.* +import org.junit.* import org.mockito.ArgumentMatchers.anyString import org.mockito.Mockito.verify /** * Unit test for [DeleteAlbumPage]. */ -class DeleteAlbumPageTest: WebPageTest(::DeleteAlbumPage) { +class DeleteAlbumPageTest : WebPageTest(::DeleteAlbumPage) { - private val sone = mock() - private val album = mock() - private val parentAlbum = mock() + private val album = AlbumImpl(currentSone, "album-id") + private val parentAlbum = AlbumImpl(currentSone, "parent-id").also { it.addAlbum(album) } @Before fun setupAlbums() { - whenever(sone.id).thenReturn("sone-id") - whenever(sone.isLocal).thenReturn(true) - whenever(parentAlbum.id).thenReturn("parent-id") - whenever(parentAlbum.isRoot).thenReturn(true) - whenever(album.id).thenReturn("album-id") - whenever(album.sone).thenReturn(sone) - whenever(album.parent).thenReturn(parentAlbum) - whenever(sone.rootAlbum).thenReturn(parentAlbum) + whenever(currentSone.id).thenReturn("sone-id") + whenever(currentSone.isLocal).thenReturn(true) + whenever(currentSone.rootAlbum).thenReturn(parentAlbum) } @Test @@ -51,7 +44,6 @@ class DeleteAlbumPageTest: WebPageTest(::DeleteAlbumPage) { @Test fun `get request with valid album ID sets album in template context`() { - val album = mock() addAlbum("album-id", album) addHttpRequestParameter("album", "album-id") page.processTemplate(freenetRequest, templateContext) @@ -67,7 +59,7 @@ class DeleteAlbumPageTest: WebPageTest(::DeleteAlbumPage) { @Test fun `post request redirects to no permissions page if album is not local`() { setMethod(POST) - whenever(sone.isLocal).thenReturn(false) + whenever(currentSone.isLocal).thenReturn(false) addAlbum("album-id", album) addHttpRequestPart("album", "album-id") verifyRedirect("noPermission.html") @@ -95,13 +87,23 @@ class DeleteAlbumPageTest: WebPageTest(::DeleteAlbumPage) { @Test fun `album is deleted and page redirects to album if parent album is not root album`() { setMethod(POST) - whenever(parentAlbum.isRoot).thenReturn(false) - whenever(sone.rootAlbum).thenReturn(mock()) - addAlbum("album-id", album) - addHttpRequestPart("album", "album-id") - verifyRedirect("imageBrowser.html?album=parent-id") { - verify(core).deleteAlbum(album) + val subAlbum = AlbumImpl(currentSone, "sub-album-id") + album.addAlbum(subAlbum) + addAlbum("sub-album-id", subAlbum) + addHttpRequestPart("album", "sub-album-id") + verifyRedirect("imageBrowser.html?album=album-id") { + verify(core).deleteAlbum(subAlbum) } } + @Test + fun `page can be created by dependency injection`() { + assertThat(baseInjector.getInstance(), notNullValue()) + } + + @Test + fun `page is annotated with correct template path`() { + assertThat(page.templatePath, equalTo("/templates/deleteAlbum.html")) + } + }