aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-08-28 10:54:39 -0700
committervlad <vlad@driver.xyz>2017-08-28 10:54:39 -0700
commit618d30aa8b2c80043525546ffe7a301b0398b30f (patch)
treecd56b5e7d59d33c6c451f85daf9730995886511a
parentb6f8b09dcc9b39f1ae9c94959c82e7eb21e37da6 (diff)
downloadrest-query-618d30aa8b2c80043525546ffe7a301b0398b30f.tar.gz
rest-query-618d30aa8b2c80043525546ffe7a301b0398b30f.tar.bz2
rest-query-618d30aa8b2c80043525546ffe7a301b0398b30f.zip
Fixing filter parser + testv0.3.6
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala2
-rw-r--r--src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala19
2 files changed, 19 insertions, 2 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
index 7bbcd10..8aff397 100644
--- a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
+++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
@@ -55,7 +55,7 @@ object SearchFilterParser {
val dimensionParser: Parser[SearchFilterExpr.Dimension] = {
val identParser = P(
CharPred(c => c.isLetterOrDigit)
- .rep(min = 1)).!.map(SearchFilterExpr.Dimension(None, _))
+ .rep(min = 1)).!.map(s => SearchFilterExpr.Dimension(None, toSnakeCase(s)))
val pathParser = P(identParser.! ~ "." ~ identParser.!) map {
case (left, right) =>
SearchFilterExpr.Dimension(Some(toSnakeCase(left)), toSnakeCase(right))
diff --git a/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala b/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala
index 9ca2343..36f1c35 100644
--- a/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala
+++ b/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala
@@ -9,8 +9,11 @@ import org.scalacheck.Arbitrary.arbitrary
import org.scalacheck.{Gen, Prop}
import org.scalatest.FreeSpecLike
import org.scalatest.prop.Checkers
+import xyz.driver.pdsuicommon.db.SearchFilterNAryOperation.In
import xyz.driver.pdsuicommon.utils.Utils._
+import scala.util.Success
+
object SearchFilterParserSuite {
class UnexpectedSearchFilterExprException(x: SearchFilterExpr) extends Exception(s"unexpected $x")
@@ -22,6 +25,20 @@ class SearchFilterParserSuite extends FreeSpecLike with Checkers {
import SearchFilterParserSuite._
"parse" - {
+ "should convert column names to snake case" in {
+ import SearchFilterBinaryOperation._
+
+ val filter = SearchFilterParser.parse(Seq(
+ "filters" -> "status IN Summarized,ReviewCriteria,Flagged,Done",
+ "filters" -> "previousStatus NOTEQ New",
+ "filters" -> "previousStatus NOTEQ ReviewSummary"
+ ))
+
+ assert(filter === Success(SearchFilterExpr.Intersection(List(
+ SearchFilterExpr.Atom.NAry(Dimension(None, "status"), In, Seq("Summarized", "ReviewCriteria", "Flagged", "Done")),
+ SearchFilterExpr.Atom.Binary(Dimension(None, "previous_status"), NotEq, "New"),
+ SearchFilterExpr.Atom.Binary(Dimension(None, "previous_status"), NotEq, "ReviewSummary")))))
+ }
"dimensions" - {
"with table name" in check {
val dimensionGen = {
@@ -35,7 +52,7 @@ class SearchFilterParserSuite extends FreeSpecLike with Checkers {
val r = toSnakeCase(right)
SearchFilterParser.dimensionParser.parse(raw) match {
case Parsed.Success(Dimension(Some(`l`), `r`), _) => true
- case res => false
+ case _ => false
}
}
}