1{-# LANGUAGE OverloadedStrings #-}
8import qualified Data.HashMap.Strict as HM
12 describe "query API" $ do
13 it "returns document for term query and identity filter" $ withTestEnv $ do
15 let query = TermQuery (Term "user" "bitemyapp") Nothing
16 let filter' = Filter $ MatchAllQuery Nothing
17 let search = mkSearch (Just query) (Just filter')
18 myTweet <- searchTweet search
20 myTweet `shouldBe` Right exampleTweet
22 it "handles constant score queries" $ withTestEnv $ do
24 let query = TermsQuery "user" ("bitemyapp" :| [])
25 let cfQuery = ConstantScoreQuery query (Boost 1.0)
26 let filter' = Filter $ MatchAllQuery Nothing
27 let search = mkSearch (Just cfQuery) (Just filter')
28 myTweet <- searchTweet search
30 myTweet `shouldBe` Right exampleTweet
32 it "returns document for terms query and identity filter" $ withTestEnv $ do
34 let query = TermsQuery "user" ("bitemyapp" :| [])
35 let filter' = Filter $ MatchAllQuery Nothing
36 let search = mkSearch (Just query) (Just filter')
37 myTweet <- searchTweet search
39 myTweet `shouldBe` Right exampleTweet
41 it "returns document for match query" $ withTestEnv $ do
43 let query = QueryMatchQuery $ mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
44 let search = mkSearch (Just query) Nothing
45 myTweet <- searchTweet search
47 myTweet `shouldBe` Right exampleTweet
49 it "returns document for multi-match query" $ withTestEnv $ do
51 let flds = [FieldName "user", FieldName "message"]
52 let query = QueryMultiMatchQuery $ mkMultiMatchQuery flds (QueryString "bitemyapp")
53 let search = mkSearch (Just query) Nothing
54 myTweet <- searchTweet search
56 myTweet `shouldBe` Right exampleTweet
58 it "returns document for multi-match query with a custom tiebreaker" $ withTestEnv $ do
60 let tiebreaker = Just $ Tiebreaker 0.3
61 flds = [FieldName "user", FieldName "message"]
62 multiQuery' = mkMultiMatchQuery flds (QueryString "bitemyapp")
63 query = QueryMultiMatchQuery $ multiQuery' { multiMatchQueryTiebreaker = tiebreaker }
64 search = mkSearch (Just query) Nothing
65 myTweet <- searchTweet search
67 myTweet `shouldBe` Right exampleTweet
69 it "returns document for bool query" $ withTestEnv $ do
71 let innerQuery = QueryMatchQuery $
72 mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
73 let query = QueryBoolQuery $
74 mkBoolQuery [innerQuery] [] [] []
75 let search = mkSearch (Just query) Nothing
76 myTweet <- searchTweet search
78 myTweet `shouldBe` Right exampleTweet
80 it "returns document for boosting query" $ withTestEnv $ do
82 let posQuery = QueryMatchQuery $ mkMatchQuery (FieldName "user") (QueryString "bitemyapp")
83 let negQuery = QueryMatchQuery $ mkMatchQuery (FieldName "user") (QueryString "notmyapp")
84 let query = QueryBoostingQuery $ BoostingQuery posQuery negQuery (Boost 0.2)
85 let search = mkSearch (Just query) Nothing
86 myTweet <- searchTweet search
88 myTweet `shouldBe` Right exampleTweet
90 it "returns document for common terms query" $ withTestEnv $ do
92 let query = QueryCommonTermsQuery $
93 CommonTermsQuery (FieldName "user")
94 (QueryString "bitemyapp")
95 (CutoffFrequency 0.0001)
96 Or Or Nothing Nothing Nothing Nothing
97 let search = mkSearch (Just query) Nothing
98 myTweet <- searchTweet search
100 myTweet `shouldBe` Right exampleTweet
102 it "returns document for for inline template query" $ withTestEnv $ do
104 let innerQuery = QueryMatchQuery $
105 mkMatchQuery (FieldName "{{userKey}}")
106 (QueryString "{{bitemyappKey}}")
107 templateParams = TemplateQueryKeyValuePairs $ HM.fromList
108 [ ("userKey", "user")
109 , ("bitemyappKey", "bitemyapp")
111 templateQuery = QueryTemplateQueryInline $
112 TemplateQueryInline innerQuery templateParams
113 search = mkSearch (Just templateQuery) Nothing
114 myTweet <- searchTweet search
115 liftIO $ myTweet `shouldBe` Right exampleTweet
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list