1{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}
5import Database.Bloodhound.Client
8import Data.Maybe (fromJust)
9import Data.Time.Calendar (Day(..))
10import Data.Time.Clock (secondsToDiffTime, UTCTime(..))
11import Data.Text (Text)
12import GHC.Generics (Generic)
13import Network.HTTP.Conduit
14import qualified Network.HTTP.Types.Status as NHTS
18testServer = Server "http://localhost:9200"
20validateStatus resp expected = (NHTS.statusCode $ responseStatus resp) `shouldBe` (expected :: Int)
21createExampleIndex = createIndex testServer defaultIndexSettings testIndex
22deleteExampleIndex = deleteIndex testServer testIndex
24data Tweet = Tweet { user :: Text
27 deriving (Eq, Generic, Show)
30instance FromJSON Tweet
32exampleTweet = Tweet { user = "bitemyapp"
34 (ModifiedJulianDay 55000)
35 (secondsToDiffTime 10)
36 , message = "Use haskell!" }
40 describe "index create/delete API" $ do
41 it "creates and then deletes the requested index" $ do
43 _ <- deleteExampleIndex
44 resp <- createExampleIndex
45 deleteResp <- deleteExampleIndex
46 validateStatus resp 200
47 validateStatus deleteResp 200
48 describe "document API" $ do
49 it "indexes, gets, and then deletes the generated document" $ do
50 let tweet = exampleTweet
51 let encoded = encode tweet
52 _ <- deleteExampleIndex
53 created <- createExampleIndex
54 docCreated <- indexDocument (Server "http://localhost:9200")
55 "twitter" "tweet" tweet "1"
56 docInserted <- getDocument (Server "http://localhost:9200")
59 (responseBody docInserted) :: Maybe (EsResult Tweet)
60 deleted <- deleteExampleIndex
61 Just tweet `shouldBe` fmap _source newTweet
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