@@ -4,6 +4,7 @@
44module Main where
55
66import Control.Applicative
7+import Control.Monad
78import Database.Bloodhound
89import Data.Aeson
910import Data.Aeson.Types (parseMaybe)
@@ -22,6 +23,8 @@ import Test.Hspec.QuickCheck (prop)
2223import Test.QuickCheck
2324import qualified Data.Map.Strict as M
2425
26+import System.IO
27+
2528testServer :: Server
2629testServer = Server "http://localhost:9200"
2730testIndex :: IndexName
@@ -382,18 +385,26 @@ main = hspec $ do
382385 describe "Aggregation API" $ do
383386 it "returns term aggregation results" $ do
384387 _ <- insertData
385− let aggs = M.insert "users" (mkTermsAggregation "user") M.empty
386− let search = (mkSearch Nothing Nothing) {aggBody = Just(aggs)}
388+ let search = mkAggregateSearch Nothing $ mkAggregations "users" $ mkTermsAggregation "user"
387389 searchExpectAggs search
388390 searchValidBucketAgg search "users" toTerms
389391
390392 it "returns date histogram aggregation results" $ do
391393 _ <- insertData
392− let aggs = M.insert "byDate" (mkDateHistogram (FieldName "postDate") Minute) M.empty
393− let search = (mkSearch Nothing Nothing) {aggBody = Just(aggs)}
394+ let histogram = mkDateHistogram (FieldName "postDate") Minute
395+ let search = mkAggregateSearch Nothing (mkAggregations "byDate" histogram)
394396 searchExpectAggs search
395397 searchValidBucketAgg search "byDate" toDateHistogram
396398
399+ it "returns date histogram using fractional date" $ do
400+ _ <- insertData
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
397408
398409 describe "ToJSON RegexpFlags" $ do
399410 it "generates the correct JSON for AllRegexpFlags" $