aboutsummaryrefslogblamecommitdiff
path: root/src/test/scala/xyz/driver/restquery/db/SearchFilterExprSuite.scala
blob: 56ad545b88135aadd73cd7a4ca1edcfeeffbdbe6 (plain) (tree)
1
2
3
4
5
6
7
8
9
                               

                                                 
                                                                                                            




                                                                    









                                                                                              







                                                                            
                                                     






                         
package xyz.driver.restquery.db

import org.scalatest.{FreeSpecLike, MustMatchers}
import xyz.driver.restquery.query.{SearchFilterBinaryOperation, SearchFilterExpr, SearchFilterNAryOperation}

class SearchFilterExprSuite extends FreeSpecLike with MustMatchers {

  "replace" - {
    "all entities are changed" in {
      val ast = SearchFilterExpr.Union(
        Seq(
          SearchFilterExpr.Intersection(
            Seq(
              SearchFilterExpr.Atom.Binary("foo", SearchFilterBinaryOperation.Gt, "10"),
              SearchFilterExpr.Atom.Binary("foo", SearchFilterBinaryOperation.Lt, "20")
            )),
          SearchFilterExpr.Atom.NAry("bar", SearchFilterNAryOperation.In, Seq("x", "y", "z")),
          SearchFilterExpr.Atom.Binary("foo", SearchFilterBinaryOperation.Eq, "40")
        ))

      val newAst = ast.replace {
        case x: SearchFilterExpr.Atom.Binary if x.dimension.name == "foo" =>
          x.copy(dimension = x.dimension.copy(name = "bar"))
      }

      val result = newAst.find {
        case x: SearchFilterExpr.Atom.Binary => x.dimension.name == "foo"
        case _                               => false
      }

      result mustBe empty
    }
  }

}