1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.data.impl.*
4 import net.pterodactylus.sone.test.*
5 import net.pterodactylus.sone.web.*
6 import net.pterodactylus.util.web.Method.*
7 import org.hamcrest.MatcherAssert.*
8 import org.hamcrest.Matchers.*
10 import org.mockito.Mockito.*
13 * Unit test for [EditAlbumPage].
15 class EditAlbumPageTest : WebPageTest(::EditAlbumPage) {
17 private val album = AlbumImpl(currentSone, "album-id")
18 private val parentAlbum = AlbumImpl(currentSone, "parent-id").also {
19 it.addAlbum(AlbumImpl(currentSone))
21 it.addAlbum(AlbumImpl(currentSone))
26 whenever(currentSone.isLocal).thenReturn(true)
27 addHttpRequestHeader("Host", "www.te.st")
31 fun `page returns correct path`() {
32 assertThat(page.path, equalTo("editAlbum.html"))
36 fun `page requires login`() {
37 assertThat(page.requiresLogin(), equalTo(true))
41 fun `page returns correct title`() {
42 addTranslation("Page.EditAlbum.Title", "edit album page")
43 assertThat(page.getPageTitle(soneRequest), equalTo("edit album page"))
47 fun `get request does not redirect`() {
48 page.processTemplate(freenetRequest, templateContext)
52 fun `post request with invalid album redirects to invalid page`() {
54 verifyRedirect("invalid.html")
58 fun `post request with album of non-local sone redirects to no permissions page`() {
60 whenever(currentSone.isLocal).thenReturn(false)
61 addAlbum("album-id", album)
62 addHttpRequestPart("album", "album-id")
63 verifyRedirect("noPermission.html")
67 fun `post request with move left requested moves album to the left and redirects to album browser`() {
69 addAlbum("album-id", album)
70 addHttpRequestPart("album", "album-id")
71 addHttpRequestPart("moveLeft", "true")
72 verifyRedirect("imageBrowser.html?album=parent-id") {
73 assertThat(parentAlbum.albums.indexOf(album), equalTo(0))
74 verify(core).touchConfiguration()
79 fun `post request with move right requested moves album to the left and redirects to album browser`() {
81 addAlbum("album-id", album)
82 addHttpRequestPart("album", "album-id")
83 addHttpRequestPart("moveRight", "true")
84 verifyRedirect("imageBrowser.html?album=parent-id") {
85 assertThat(parentAlbum.albums.indexOf(album), equalTo(2))
86 verify(core).touchConfiguration()
91 fun `post request with empty album title redirects to empty album title page`() {
93 addAlbum("album-id", album)
94 addHttpRequestPart("album", "album-id")
95 verifyRedirect("emptyAlbumTitle.html")
99 fun `post request with non-empty album title and description redirects to album browser`() {
101 addAlbum("album-id", album)
102 addHttpRequestPart("album", "album-id")
103 addHttpRequestPart("title", "title")
104 addHttpRequestPart("description", "description")
105 verifyRedirect("imageBrowser.html?album=album-id") {
106 assertThat(album.title, equalTo("title"))
107 assertThat(album.description, equalTo("description"))
108 verify(core).touchConfiguration()
113 fun `page can be created by dependency injection`() {
114 assertThat(baseInjector.getInstance<EditAlbumPage>(), notNullValue())