@@ -4,6 +4,7 @@
4module Main where
4module Main where
6import Control.Applicative
6import Control.Applicative
7import Database.Bloodhound
8import Database.Bloodhound
8import Data.Aeson
9import Data.Aeson
9import Data.Aeson.Types (parseMaybe)
10import Data.Aeson.Types (parseMaybe)
@@ -22,6 +23,8 @@ import Test.Hspec.QuickCheck (prop)
22import Test.QuickCheck
23import Test.QuickCheck
23import qualified Data.Map.Strict as M
24import qualified Data.Map.Strict as M
25testServer :: Server
28testServer :: Server
26testServer = Server "http://localhost:9200"
29testServer = Server "http://localhost:9200"
27testIndex :: IndexName
30testIndex :: IndexName
@@ -382,18 +385,26 @@ main = hspec $ do
382 describe "Aggregation API" $ do
385 describe "Aggregation API" $ do
383 it "returns term aggregation results" $ do
386 it "returns term aggregation results" $ do
384 _ <- insertData
387 _ <- insertData
385− let aggs = M.insert "users" (mkTermsAggregation "user") M.empty
388+ let search = mkAggregateSearch Nothing $ mkAggregations "users" $ mkTermsAggregation "user"
386− let search = (mkSearch Nothing Nothing) {aggBody = Just(aggs)}
387 searchExpectAggs search
389 searchExpectAggs search
388 searchValidBucketAgg search "users" toTerms
390 searchValidBucketAgg search "users" toTerms
390 it "returns date histogram aggregation results" $ do
392 it "returns date histogram aggregation results" $ do
391 _ <- insertData
393 _ <- insertData
392− let aggs = M.insert "byDate" (mkDateHistogram (FieldName "postDate") Minute) M.empty
394+ let histogram = mkDateHistogram (FieldName "postDate") Minute
393− let search = (mkSearch Nothing Nothing) {aggBody = Just(aggs)}
395+ let search = mkAggregateSearch Nothing (mkAggregations "byDate" histogram)
394 searchExpectAggs search
396 searchExpectAggs search
395 searchValidBucketAgg search "byDate" toDateHistogram
397 searchValidBucketAgg search "byDate" toDateHistogram
399+ it "returns date histogram using fractional date" $ do
401+ let intervals = [Weeks, Days, Hours, Minutes, Seconds]
402+ let histogram interval = mkDateHistogram (FieldName "postDate") (FractionalInterval 1.5 interval)
403+ let search interval = mkAggregateSearch Nothing $ mkAggregations "byDate" $ histogram interval
404+ let expect interval = searchExpectAggs (search interval)
405+ let valid interval = searchValidBucketAgg (search interval) "byDate" toDateHistogram
406+ forM_ intervals expect
407+ forM_ intervals valid
398 describe "ToJSON RegexpFlags" $ do
409 describe "ToJSON RegexpFlags" $ do
399 it "generates the correct JSON for AllRegexpFlags" $
410 it "generates the correct JSON for AllRegexpFlags" $