aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/xyz/driver/restquery/db/SearchFilterExprSuite.scala
blob: 35c8d304961ca143304e8eef49b9d1f53a7fcdf2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package xyz.driver.pdsuicommon.db

import org.scalatest.{FreeSpecLike, MustMatchers}

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
    }
  }

}