@@ -18,29 +18,53 @@ package org.modelix.model.server.handlers.ui
18
18
19
19
import kotlinx.html.span
20
20
import kotlinx.html.stream.createHTML
21
+ import org.jsoup.Jsoup
21
22
import kotlin.test.Test
22
23
import kotlin.test.assertEquals
23
24
24
25
class RepositoryOverviewTest {
25
26
26
27
@Test
27
- fun testSlashesInPathSegmentsFromRepositoryIdAndBranchId () {
28
+ fun `history link is encoded properly` () {
28
29
val html = createHTML(prettyPrint = false ).span {
29
30
buildHistoryLink(" repository/v1" , " branch/v2" )
31
+ }
32
+ val document = Jsoup .parse(html)
33
+
34
+ val href = document.getElementsByTag(" a" ).first()?.attribute(" href" )?.value
35
+ assertEquals(" ../history/repository%2Fv1/branch%2Fv2/" , href)
36
+ }
37
+
38
+ @Test
39
+ fun `explore latest link is encoded properly` () {
40
+ val html = createHTML(prettyPrint = false ).span {
30
41
buildExploreLatestLink(" repository/v1" , " branch/v2" )
42
+ }
43
+ val document = Jsoup .parse(html)
44
+
45
+ val href = document.getElementsByTag(" a" ).first()?.attribute(" href" )?.value
46
+ assertEquals(" ../content/repositories/repository%2Fv1/branches/branch%2Fv2/latest/" , href)
47
+ }
48
+
49
+ @Test
50
+ fun `delete repository form action is encoded properly` () {
51
+ val html = createHTML(prettyPrint = false ).span {
31
52
buildDeleteRepositoryForm(" repository/v1" )
32
53
}
33
- assertEquals(
34
- """
35
- <span>
36
- <a href="../history/repository%2Fv1/branch%2Fv2/">Show History</a>
37
- <a href="../content/repositories/repository%2Fv1/branches/branch%2Fv2/latest/">Explore Latest Version</a>
38
- <form>
39
- <button formmethod="post" name="delete" formaction="../v2/repositories/repository%2Fv1/delete">Delete Repository</button>
40
- </form>
41
- </span>
42
- """ .lines().joinToString(" " ) { it.trim() },
43
- html,
44
- )
54
+
55
+ val document = Jsoup .parse(html)
56
+ val formAction = document.getElementsByTag(" button" ).first()?.attribute(" formaction" )?.value
57
+ assertEquals(" ../v2/repositories/repository%2Fv1/delete" , formAction)
58
+ }
59
+
60
+ @Test
61
+ fun `delete branch button parameters are encoded properly` () {
62
+ val html = createHTML(prettyPrint = false ).span {
63
+ buildDeleteBranchButton(" repository/v1" , " branch/v2" )
64
+ }
65
+
66
+ val document = Jsoup .parse(html)
67
+ val onClick = document.getElementsByTag(" button" ).first()?.attribute(" onclick" )?.value
68
+ assertEquals(" return removeBranch('repository%2Fv1', 'branch%2Fv2')" , onClick)
45
69
}
46
70
}
0 commit comments