packages feed

bloodhound-0.23.0.0: tests/Test/ScriptSpec.hs

{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}

module Test.ScriptSpec (spec) where

import qualified Data.Aeson.KeyMap as X
import qualified Data.Map as M
import TestsUtils.Common
import TestsUtils.Import

spec :: Spec
spec =
  describe "Script" $
    it "returns a transformed document based on the script field" $
      withTestEnv $ do
        _ <- insertData
        let query = MatchAllQuery Nothing
            sfv =
              toJSON $
                Script
                  (Just (ScriptLanguage "painless"))
                  (ScriptInline "doc['age'].value * 2")
                  Nothing
            sf =
              ScriptFields $
                X.fromList [("test1", sfv)]
            search' = mkSearch (Just query) Nothing
            search = search' {scriptFields = Just sf}
        sr <- performBHRequest $ searchByIndex @Value testIndex search
        let Just results =
              hitFields (head (hits (searchHits sr)))
        liftIO $
          results `shouldBe` HitFields (M.fromList [("test1", [Number 20000.0])])