Add unit test for move profile field ajax page
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / MoveProfileFieldAjaxPageTest.kt
1 package net.pterodactylus.sone.web.ajax
2
3 import org.hamcrest.MatcherAssert.assertThat
4 import org.hamcrest.Matchers.equalTo
5 import org.junit.Test
6 import org.mockito.Mockito.verify
7
8 /**
9  * Unit test for [MoveProfileFieldAjaxPage].
10  */
11 class MoveProfileFieldAjaxPageTest : JsonPageTest("moveProfileField.ajax", true, true, ::MoveProfileFieldAjaxPage) {
12
13         @Test
14         fun `request without field id results in invalid-field-id`() {
15                 assertThat(json.isSuccess, equalTo(false))
16                 assertThat(json.error, equalTo("invalid-field-id"))
17         }
18
19         @Test
20         fun `request with invalid direction results in invalid-direction`() {
21                 val fieldId = profile.addField("someField").id
22                 addRequestParameter("field", fieldId)
23                 assertThat(json.isSuccess, equalTo(false))
24                 assertThat(json.error, equalTo("invalid-direction"))
25         }
26
27         @Test
28         fun `moving first field up results in not-possible`() {
29                 val fieldId = profile.addField("someField").id
30                 addRequestParameter("field", fieldId)
31                 addRequestParameter("direction", "up")
32                 assertThat(json.isSuccess, equalTo(false))
33                 assertThat(json.error, equalTo("not-possible"))
34         }
35
36         @Test
37         fun `moving only field down results in not-possible`() {
38                 val fieldId = profile.addField("someField").id
39                 addRequestParameter("field", fieldId)
40                 addRequestParameter("direction", "down")
41                 assertThat(json.isSuccess, equalTo(false))
42                 assertThat(json.error, equalTo("not-possible"))
43         }
44
45         @Test
46         fun `moving second field up results in field being moved up`() {
47                 profile.addField("firstField")
48                 val fieldId = profile.addField("someField").id
49                 addRequestParameter("field", fieldId)
50                 addRequestParameter("direction", "up")
51                 assertThat(json.isSuccess, equalTo(true))
52                 assertThat(profile.fields[0].id, equalTo(fieldId))
53                 verify(core).touchConfiguration()
54                 verify(currentSone).profile = profile
55         }
56
57         @Test
58         fun `moving first field down results in field being moved down`() {
59                 val fieldId = profile.addField("someField").id
60                 profile.addField("firstField")
61                 addRequestParameter("field", fieldId)
62                 addRequestParameter("direction", "down")
63                 assertThat(json.isSuccess, equalTo(true))
64                 assertThat(profile.fields.last().id, equalTo(fieldId))
65                 verify(core).touchConfiguration()
66                 verify(currentSone).profile = profile
67         }
68
69 }