From f8eb20e07891203c7ac7c9fa460c6db930acd06a Mon Sep 17 00:00:00 2001 From: vlad Date: Wed, 25 Oct 2017 17:51:34 -0700 Subject: Fixing filters parsing for UUIDs --- .../scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala | 7 +++---- .../xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala | 7 +++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala index 41533fe..a19945a 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala @@ -108,10 +108,9 @@ object SearchFilterParser { P((IgnoreCase("true") | IgnoreCase("false")).!.map(_.toBoolean)) private val binaryAtomParser: Parser[SearchFilterExpr.Atom.Binary] = P( - dimensionParser ~ whitespaceParser ~ ( - (numericOperatorParser.! ~ whitespaceParser ~ (longParser | booleanParser | numberParser.!)) | - (commonOperatorParser.! ~ whitespaceParser ~ AnyChar.rep(min = 1).!) - ) ~ End + dimensionParser ~ whitespaceParser ~ + ((numericOperatorParser.! ~ whitespaceParser ~ (longParser | booleanParser | numberParser.!) ~ End) | + (commonOperatorParser.! ~ whitespaceParser ~ AnyChar.rep(min = 1).! ~ End)) ).map { case BinaryAtomFromTuple(atom) => atom } diff --git a/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala b/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala index ac5eec1..ac0010f 100644 --- a/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala +++ b/src/test/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParserSuite.scala @@ -126,6 +126,13 @@ class SearchFilterParserSuite extends FreeSpecLike with Checkers { } } + "actual patientId uuid" - { + "should parse the full UUID" in { + val filter = SearchFilterParser.parse(Seq("filters" -> "patientId EQ 4b4879f7-42b3-4b7c-a685-5c97d9e69e7c")) + assert(filter === Success(SearchFilterExpr.Atom.Binary(Dimension(None, "patient_id"), Eq, "4b4879f7-42b3-4b7c-a685-5c97d9e69e7c"))) + } + } + "all operators" - { "should be parsed with numeric values" in check { val testQueryGen = queryGen( -- cgit v1.2.3