Skip to content

Commit d719a4a

Browse files
domdomeggmaskaravivek
authored andcommitted
Add tests for PageTitle (commons-app#2624)
1 parent cfade14 commit d719a4a

File tree

2 files changed

+43
-16
lines changed

2 files changed

+43
-16
lines changed

app/src/main/java/fr/free/nrw/commons/PageTitle.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,9 @@ public class PageTitle {
1414
public PageTitle(@NonNull String prefixedText) {
1515
String[] segments = prefixedText.trim().replace(" ", "_").split(":", 2);
1616

17-
// canonicalize and capitalize page title as done by MediaWiki
17+
// Canonicalize and capitalize page title and namespace (if present)
1818
if (segments.length == 2) {
19-
// TODO: canonicalize and capitalize namespace as well
20-
// see https://www.mediawiki.org/wiki/Manual:Title.php#Canonical_forms
21-
namespace = segments[0];
19+
namespace = Utils.capitalize(segments[0]);
2220
titleKey = Utils.capitalize(segments[1]);
2321
} else {
2422
namespace = "";

app/src/test/kotlin/fr/free/nrw/commons/PageTitleTest.kt

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,66 @@ import org.robolectric.annotation.Config
88
import java.net.URLEncoder
99

1010
@RunWith(RobolectricTestRunner::class)
11-
@Config(constants = BuildConfig::class, sdk = intArrayOf(21), application = TestCommonsApplication::class)
11+
@Config(constants = BuildConfig::class, sdk = [21], application = TestCommonsApplication::class)
1212
class PageTitleTest {
1313
@Test
1414
fun displayTextShouldNotBeUnderscored() {
15-
val pageTitle = PageTitle("Ex_1 ")
16-
assertEquals("Ex 1", pageTitle.displayText)
15+
assertEquals("Ex 1", PageTitle("Ex_1").displayText)
16+
assertEquals("Ex 1", PageTitle("Ex_1 ").displayText)
17+
assertEquals("Ex 1", PageTitle("Ex 1").displayText)
18+
assertEquals("Ex 1", PageTitle("Ex 1 ").displayText)
19+
assertEquals("File:Ex 1 2", PageTitle("File:Ex_1_2 ").displayText)
1720
}
1821

1922
@Test
20-
fun moreThanTwoColons() {
23+
fun prefixedTextShouldBeUnderscored() {
24+
assertEquals("Ex_1", PageTitle("Ex_1").prefixedText)
25+
assertEquals("Ex_1", PageTitle("Ex_1 ").prefixedText)
26+
assertEquals("Ex_1", PageTitle("Ex 1").prefixedText)
27+
assertEquals("Ex_1", PageTitle("Ex 1 ").prefixedText)
28+
assertEquals("File:Ex_1_2", PageTitle("File:Ex 1 2 ").prefixedText)
29+
}
30+
31+
@Test
32+
fun fileNameWithOneColon() {
2133
val pageTitle = PageTitle("File:sample:a.jpg")
2234
assertEquals("File:Sample:a.jpg", pageTitle.prefixedText)
35+
assertEquals("File:Sample:a.jpg", pageTitle.displayText)
36+
assertEquals("Sample:a.jpg", pageTitle.text)
2337
}
2438

2539
@Test
26-
fun getTextShouldReturnWithoutNamespace() {
27-
val pageTitle = PageTitle("File:sample.jpg")
28-
assertEquals("Sample.jpg", pageTitle.text)
40+
fun fileNameWithMoreThanOneColon() {
41+
var pageTitle = PageTitle("File:sample:a:b.jpg")
42+
assertEquals("File:Sample:a:b.jpg", pageTitle.prefixedText)
43+
assertEquals("File:Sample:a:b.jpg", pageTitle.displayText)
44+
assertEquals("Sample:a:b.jpg", pageTitle.text)
45+
46+
pageTitle = PageTitle("File:sample:a:b:c.jpg")
47+
assertEquals("File:Sample:a:b:c.jpg", pageTitle.prefixedText)
48+
assertEquals("File:Sample:a:b:c.jpg", pageTitle.displayText)
49+
assertEquals("Sample:a:b:c.jpg", pageTitle.text)
2950
}
3051

52+
@Test
53+
fun keyShouldNotIncludeNamespace() {
54+
val pageTitle = PageTitle("File:Sample.jpg")
55+
assertEquals("Sample.jpg", pageTitle.text)
56+
}
3157

3258
@Test
33-
fun capitalizeNameAfterNamespace() {
34-
val pageTitle = PageTitle("File:sample.jpg")
59+
fun capitalizeNamespace() {
60+
val pageTitle = PageTitle("file:Sample.jpg")
3561
assertEquals("File:Sample.jpg", pageTitle.prefixedText)
62+
assertEquals("File:Sample.jpg", pageTitle.displayText)
3663
}
3764

3865
@Test
39-
fun prefixedTextShouldBeUnderscored() {
40-
val pageTitle = PageTitle("Ex 1 ")
41-
assertEquals("Ex_1", pageTitle.prefixedText)
66+
fun capitalizeKey() {
67+
val pageTitle = PageTitle("File:sample.jpg")
68+
assertEquals("File:Sample.jpg", pageTitle.prefixedText)
69+
assertEquals("File:Sample.jpg", pageTitle.displayText)
70+
assertEquals("Sample.jpg", pageTitle.text)
4271
}
4372

4473
@Test

0 commit comments

Comments
 (0)