aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/xyz/driver/pdsuicommon/parsers/PaginationParserSuite.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2017-08-08 00:11:13 -0700
committerJakob Odersky <jakob@driver.xyz>2017-08-16 19:26:10 -0700
commita59d6910eaccf9b5540fb41648a7d4e67cc241b5 (patch)
treec27ba7bb752835c47b0f569ea8c48c3bed21e513 /src/test/scala/xyz/driver/pdsuicommon/parsers/PaginationParserSuite.scala
parent75fcedad9270c70c014af819b7d46dcfe00c1282 (diff)
downloadrest-query-a59d6910eaccf9b5540fb41648a7d4e67cc241b5.tar.gz
rest-query-a59d6910eaccf9b5540fb41648a7d4e67cc241b5.tar.bz2
rest-query-a59d6910eaccf9b5540fb41648a7d4e67cc241b5.zip
Fix parsers and renable fatal warnings
Diffstat (limited to 'src/test/scala/xyz/driver/pdsuicommon/parsers/PaginationParserSuite.scala')
-rw-r--r--src/test/scala/xyz/driver/pdsuicommon/parsers/PaginationParserSuite.scala95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/test/scala/xyz/driver/pdsuicommon/parsers/PaginationParserSuite.scala b/src/test/scala/xyz/driver/pdsuicommon/parsers/PaginationParserSuite.scala
new file mode 100644
index 0000000..48fc99b
--- /dev/null
+++ b/src/test/scala/xyz/driver/pdsuicommon/parsers/PaginationParserSuite.scala
@@ -0,0 +1,95 @@
+package xyz.driver.pdsuicommon.parsers
+
+import xyz.driver.pdsuicommon.db.Pagination
+import xyz.driver.pdsuicommon.parsers.TestUtils._
+import org.scalatest.{FreeSpecLike, MustMatchers}
+
+import scala.util.{Failure, Try}
+
+class PaginationParserSuite extends FreeSpecLike with MustMatchers {
+
+ "parse" - {
+ "pageSize" - {
+ "should parse positive value" in {
+ val pagination = PaginationParser.parse(Seq(
+ "pageSize" -> "10",
+ "pageNumber" -> "1"
+ ))
+ pagination must success
+ pagination.get.pageSize mustBe 10
+ }
+
+ "should return a default value if there is no one" in {
+ val pagination = PaginationParser.parse(Seq(
+ "pageNumber" -> "1"
+ ))
+ pagination must success
+ pagination.get.pageSize mustBe 100
+ }
+
+ "should return a error for zero value" in {
+ val pagination = PaginationParser.parse(Seq(
+ "pageSize" -> "0",
+ "pageNumber" -> "1"
+ ))
+
+ checkFailedValidationOnlyOn(pagination, "pageSize")
+ }
+
+ "should return a error for negative value" in {
+ val pagination = PaginationParser.parse(Seq(
+ "pageSize" -> "-10",
+ "pageNumber" -> "1"
+ ))
+
+ checkFailedValidationOnlyOn(pagination, "pageSize")
+ }
+ }
+
+ "pageNumber" - {
+ "should parse positive value" in {
+ val pagination = PaginationParser.parse(Seq(
+ "pageSize" -> "1",
+ "pageNumber" -> "1"
+ ))
+ pagination must success
+ pagination.get.pageSize mustBe 1
+ }
+
+ "should return a default value if there is no one" in {
+ val pagination = PaginationParser.parse(Seq(
+ "pageSize" -> "1"
+ ))
+ pagination must success
+ pagination.get.pageNumber mustBe 1
+ }
+
+ "should return a error for zero value" in {
+ val pagination = PaginationParser.parse(Seq(
+ "pageSize" -> "1",
+ "pageNumber" -> "0"
+ ))
+
+ checkFailedValidationOnlyOn(pagination, "pageNumber")
+ }
+
+ "should return a error for negative value" in {
+ val pagination = PaginationParser.parse(Seq(
+ "pageSize" -> "1",
+ "pageNumber" -> "-1"
+ ))
+
+ checkFailedValidationOnlyOn(pagination, "pageNumber")
+ }
+ }
+ }
+
+ private def checkFailedValidationOnlyOn(pagination: Try[Pagination], key: String): Unit = {
+ pagination must failWith[ParseQueryArgException]
+
+ val Failure(e: ParseQueryArgException) = pagination
+ e.errors.size mustBe 1
+ e.errors.head._1 mustBe key
+ }
+
+}