Remove obsolete loading animation
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / DeleteProfileFieldPageTest.kt
1 package net.pterodactylus.sone.web
2
3 import net.pterodactylus.sone.data.Profile
4 import net.pterodactylus.sone.test.whenever
5 import net.pterodactylus.util.web.Method.GET
6 import net.pterodactylus.util.web.Method.POST
7 import org.hamcrest.MatcherAssert.assertThat
8 import org.hamcrest.Matchers.equalTo
9 import org.hamcrest.Matchers.nullValue
10 import org.junit.Before
11 import org.junit.Test
12 import org.mockito.Mockito.any
13 import org.mockito.Mockito.never
14 import org.mockito.Mockito.verify
15
16 /**
17  * Unit test for [DeleteProfileFieldPage].
18  */
19 class DeleteProfileFieldPageTest: WebPageTest() {
20
21         private val page = DeleteProfileFieldPage(template, webInterface)
22
23         private val profile = Profile(currentSone)
24         private val field = profile.addField("name")
25
26         override fun getPage() = page
27
28         @Before
29         fun setupProfile() {
30                 whenever(currentSone.profile).thenReturn(profile)
31                 field.value = "value"
32         }
33
34         @Test
35         fun `page returns correct path`() {
36                 assertThat(page.path, equalTo("deleteProfileField.html"))
37         }
38
39         @Test
40         fun `page requires login`() {
41                 assertThat(page.requiresLogin(), equalTo(true))
42         }
43
44         @Test
45         fun `get request with invalid field name redirects to invalid page`() {
46                 request("", GET)
47                 verifyRedirect("invalid.html")
48         }
49
50         @Test
51         fun `post request with invalid field name redirects to invalid page`() {
52                 request("", POST)
53                 addHttpRequestParameter("field", "wrong-id")
54                 verifyRedirect("invalid.html")
55         }
56
57         @Test
58         fun `get request with valid field name sets field in template context`() {
59                 request("", GET)
60                 addHttpRequestParameter("field", field.id)
61                 page.processTemplate(freenetRequest, templateContext)
62                 assertThat(templateContext["field"], equalTo<Any>(field))
63         }
64
65         @Test
66         fun `post request without confirm redirects to edit profile page`() {
67                 request("", POST)
68                 addHttpRequestParameter("field", field.id)
69                 verifyRedirect("editProfile.html#profile-fields") {
70                         verify(currentSone, never()).profile = any()
71                 }
72         }
73
74         @Test
75         fun `post request with confirm removes field and redirects to edit profile page`() {
76                 request("", POST)
77                 addHttpRequestParameter("field", field.id)
78                 addHttpRequestParameter("confirm", "true")
79                 verifyRedirect("editProfile.html#profile-fields") {
80                         assertThat(profile.getFieldById(field.id), nullValue())
81                         verify(currentSone).profile = profile
82                 }
83         }
84
85 }