Add test for DI constructability of MoveProfileFieldAjaxPage
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / MoveProfileFieldAjaxPageTest.kt
1 package net.pterodactylus.sone.web.ajax
2
3 import net.pterodactylus.sone.test.getInstance
4 import net.pterodactylus.sone.web.baseInjector
5 import org.hamcrest.MatcherAssert.assertThat
6 import org.hamcrest.Matchers.equalTo
7 import org.hamcrest.Matchers.notNullValue
8 import org.junit.Test
9 import org.mockito.Mockito.verify
10
11 /**
12  * Unit test for [MoveProfileFieldAjaxPage].
13  */
14 class MoveProfileFieldAjaxPageTest : JsonPageTest("moveProfileField.ajax", true, true, ::MoveProfileFieldAjaxPage) {
15
16         @Test
17         fun `request without field id results in invalid-field-id`() {
18                 assertThatJsonFailed("invalid-field-id")
19         }
20
21         @Test
22         fun `request with invalid direction results in invalid-direction`() {
23                 val fieldId = profile.addField("someField").id
24                 addRequestParameter("field", fieldId)
25                 assertThatJsonFailed("invalid-direction")
26         }
27
28         @Test
29         fun `moving first field up results in not-possible`() {
30                 val fieldId = profile.addField("someField").id
31                 addRequestParameter("field", fieldId)
32                 addRequestParameter("direction", "up")
33                 assertThatJsonFailed("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                 assertThatJsonFailed("not-possible")
42         }
43
44         @Test
45         fun `moving second field up results in field being moved up`() {
46                 profile.addField("firstField")
47                 val fieldId = profile.addField("someField").id
48                 addRequestParameter("field", fieldId)
49                 addRequestParameter("direction", "up")
50                 assertThatJsonIsSuccessful()
51                 assertThat(profile.fields[0].id, equalTo(fieldId))
52                 verify(core).touchConfiguration()
53                 verify(currentSone).profile = profile
54         }
55
56         @Test
57         fun `moving first field down results in field being moved down`() {
58                 val fieldId = profile.addField("someField").id
59                 profile.addField("firstField")
60                 addRequestParameter("field", fieldId)
61                 addRequestParameter("direction", "down")
62                 assertThatJsonIsSuccessful()
63                 assertThat(profile.fields.last().id, equalTo(fieldId))
64                 verify(core).touchConfiguration()
65                 verify(currentSone).profile = profile
66         }
67
68         @Test
69         fun `page can be created by dependency injection`() {
70             assertThat(baseInjector.getInstance<MoveProfileFieldAjaxPage>(), notNullValue())
71         }
72
73 }