X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FDeleteAlbumPageTest.kt;h=9276be7f4c2472695cf186eb94dec8922324a100;hb=7cd4d9d35a4698d4e98b6e2d215102c7b1751b34;hp=fc6979794eb7cd360bb663be4aee818f2c1cea0f;hpb=5c8ad31fa8d083ca1c87f292e00bc7b21fbd85a5;p=Sone.git diff --git a/src/test/kotlin/net/pterodactylus/sone/web/DeleteAlbumPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/DeleteAlbumPageTest.kt index fc69797..9276be7 100644 --- a/src/test/kotlin/net/pterodactylus/sone/web/DeleteAlbumPageTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/web/DeleteAlbumPageTest.kt @@ -4,7 +4,6 @@ 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.sone.web.WebTestUtils.redirectsTo import net.pterodactylus.util.web.Method.GET import net.pterodactylus.util.web.Method.POST import org.hamcrest.MatcherAssert.assertThat @@ -12,11 +11,12 @@ import org.hamcrest.Matchers.equalTo import org.junit.Before import org.junit.Test import org.mockito.ArgumentMatchers.anyString +import org.mockito.Mockito.verify /** * Unit test for [DeleteAlbumPage]. */ -class DeleteAlbumPageTest : WebPageTest() { +class DeleteAlbumPageTest: WebPageTest() { private val page = DeleteAlbumPage(template, webInterface) @@ -24,11 +24,14 @@ class DeleteAlbumPageTest : WebPageTest() { private val album = mock() private val parentAlbum = mock() + override fun getPage() = page + @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) @@ -36,11 +39,20 @@ class DeleteAlbumPageTest : WebPageTest() { } @Test + fun `page returns correct path`() { + assertThat(page.path, equalTo("deleteAlbum.html")) + } + + @Test + fun `page requires login`() { + assertThat(page.requiresLogin(), equalTo(true)) + } + + @Test fun `get request with invalid album ID results in redirect to invalid page`() { request("", GET) whenever(core.getAlbum(anyString())).thenReturn(null) - expectedException.expect(redirectsTo("invalid.html")) - page.handleRequest(freenetRequest, templateContext) + verifyRedirect("invalid.html") } @Test @@ -49,15 +61,14 @@ class DeleteAlbumPageTest : WebPageTest() { val album = mock() addAlbum("album-id", album) addHttpRequestParameter("album", "album-id") - page.handleRequest(freenetRequest, templateContext) + page.processTemplate(freenetRequest, templateContext) assertThat(templateContext["album"], equalTo(album)) } @Test fun `post request redirects to invalid page if album is invalid`() { request("", POST) - expectedException.expect(redirectsTo("invalid.html")) - page.handleRequest(freenetRequest, templateContext) + verifyRedirect("invalid.html") } @Test @@ -66,8 +77,7 @@ class DeleteAlbumPageTest : WebPageTest() { whenever(sone.isLocal).thenReturn(false) addAlbum("album-id", album) addHttpRequestParameter("album", "album-id") - expectedException.expect(redirectsTo("noPermission.html")) - page.handleRequest(freenetRequest, templateContext) + verifyRedirect("noPermission.html") } @Test @@ -76,8 +86,7 @@ class DeleteAlbumPageTest : WebPageTest() { addAlbum("album-id", album) addHttpRequestParameter("album", "album-id") addHttpRequestParameter("abortDelete", "true") - expectedException.expect(redirectsTo("imageBrowser.html?album=album-id")) - page.handleRequest(freenetRequest, templateContext) + verifyRedirect("imageBrowser.html?album=album-id") } @Test @@ -85,18 +94,21 @@ class DeleteAlbumPageTest : WebPageTest() { request("", POST) addAlbum("album-id", album) addHttpRequestParameter("album", "album-id") - expectedException.expect(redirectsTo("imageBrowser.html?sone=sone-id")) - page.handleRequest(freenetRequest, templateContext) + verifyRedirect("imageBrowser.html?sone=sone-id") { + verify(core).deleteAlbum(album) + } } @Test fun `album is deleted and page redirects to album if parent album is not root album`() { request("", POST) + whenever(parentAlbum.isRoot).thenReturn(false) whenever(sone.rootAlbum).thenReturn(mock()) addAlbum("album-id", album) addHttpRequestParameter("album", "album-id") - expectedException.expect(redirectsTo("imageBrowser.html?album=parent-id")) - page.handleRequest(freenetRequest, templateContext) + verifyRedirect("imageBrowser.html?album=parent-id") { + verify(core).deleteAlbum(album) + } } }