|
Play Framework/Scala example source code file (RouterSpec.scala)
The RouterSpec.scala Play Framework example source code
/*
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
*/
package play.core.router
import org.specs2.mutable.Specification
import play.core.{Router, PathPattern, DynamicPart, StaticPart}
object RouterSpec extends Specification {
"Router dynamic string builder" should {
"handle empty parts" in {
Router.dynamicString("") must_== ""
}
"handle simple parts" in {
Router.dynamicString("xyz") must_== "xyz"
}
"handle parts containing backslashes" in {
Router.dynamicString("x/y") must_== "x%2Fy"
}
"handle parts containing spaces" in {
Router.dynamicString("x y") must_== "x%20y"
}
"handle parts containing pluses" in {
Router.dynamicString("x+y") must_== "x+y"
}
"handle parts with unicode characters" in {
Router.dynamicString("ℛat") must_== "%E2%84%9Bat"
}
}
"Router queryString builder" should {
"build a query string" in {
Router.queryString(List(Some("a"), Some("b"))) must_== "?a&b"
}
"ignore none values" in {
Router.queryString(List(Some("a"), None, Some("b"))) must_== "?a&b"
Router.queryString(List(None, Some("a"), None)) must_== "?a"
}
"ignore empty values" in {
Router.queryString(List(Some("a"), Some(""), Some("b"))) must_== "?a&b"
Router.queryString(List(Some(""), Some("a"), Some(""))) must_== "?a"
}
"produce nothing if no values" in {
Router.queryString(List(None, Some(""))) must_== ""
Router.queryString(List()) must_== ""
}
}
"PathPattern" should {
val pathPattern = PathPattern(Seq(StaticPart("/path/"), StaticPart("to/"), DynamicPart("foo", "[^/]+", true)))
val pathString = "/path/to/some%20file"
val pathNonEncodedString1 = "/path/to/bar:baz"
val pathNonEncodedString2 = "/path/to/bar:%20baz"
val pathStringInvalid = "/path/to/invalide%2"
"Bind Path string as string" in {
pathPattern(pathString).get("foo") must beEqualTo(Right("some file"))
}
"Bind Path with incorrectly encoded string as string" in {
pathPattern(pathNonEncodedString1).get("foo") must beEqualTo(Right("bar:baz"))
}
"Bind Path with incorrectly encoded string as string" in {
pathPattern(pathNonEncodedString2).get("foo") must beEqualTo(Right("bar: baz"))
}
"Fail on unparseable Path string" in {
val Left(e) = pathPattern(pathStringInvalid).get("foo")
e.getMessage must beEqualTo("Malformed escape pair at index 9: /invalide%2")
}
"multipart path is not decoded" in {
val pathPattern = PathPattern(Seq(StaticPart("/path/"), StaticPart("to/"), DynamicPart("foo", ".+", false)))
val pathString = "/path/to/this/is/some%20file/with/id"
pathPattern(pathString).get("foo") must beEqualTo(Right("this/is/some%20file/with/id"))
}
}
}
Other Play Framework source code examplesHere is a short list of links related to this Play Framework RouterSpec.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.