-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLanguagesSpec.scala
99 lines (84 loc) · 2.23 KB
/
LanguagesSpec.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package io.flow.reference
import org.scalatest.funspec.AnyFunSpec
import org.scalatest.matchers.should.Matchers
class LanguagesSpec extends AnyFunSpec with Matchers {
it("be unique") {
data.Languages.all.groupBy(_.name).filter { _._2.size > 1 }.keys should be(Set())
data.Languages.all.groupBy(_.iso6392).filter { _._2.size > 1 }.keys should be(Set())
}
it("be sorted") {
data.Languages.all.map(_.name) should be(data.Languages.all.map(_.name).sortBy { _.toLowerCase })
}
it("have codes in lower case") {
data.Languages.all.map(_.iso6392) should be(data.Languages.all.map(_.iso6392.toLowerCase))
}
it("have no blanks") {
data.Languages.all.find(_.name.trim.isEmpty) should be(None)
data.Languages.all.find(_.iso6392.trim.isEmpty) should be(None)
}
it("codes in use are defined") {
val all = Seq(
"aa",
"af",
"ar",
"be",
"bg",
"ca",
"cs",
"cy",
"da",
"de",
"en",
"es",
"et",
"fa",
"fi",
"fr",
"ja",
"kg",
"ko",
"nb",
"nl",
"pl",
"pt",
"ru",
"sq",
"sv",
"th",
"zh",
)
all.filter { code =>
Languages.find(code).isEmpty
} should be(Nil)
}
it("have common languages are defined") {
val english = data.Languages.all.find(_.iso6392 == "en").getOrElse {
sys.error("english missing")
}
english.iso6392 should be("en")
english.name should be("English")
val french = data.Languages.all.find(_.iso6392 == "fr").getOrElse {
sys.error("french missing")
}
french.iso6392 should be("fr")
french.name should be("French")
}
it("find") {
Seq("en", "EN", " en ", " english ").foreach { name =>
Languages.find(name).getOrElse {
sys.error(s"$name missing")
}
}
Languages.find("other") should be(None)
}
it("mustFind") {
Seq("en", "EN", " en ", " english ").foreach { name =>
Languages.mustFind(name).iso6392 should be("en")
}
intercept[Throwable] {
Languages.mustFind("other")
}.getMessage should be(
"The following language is invalid: [other]. See https://api.flow.io/reference/languages for a list of all valid languages.",
)
}
}