@@ -1,4 +1,4 @@
1−{-# LANGUAGE DeriveGeneric, TemplateHaskell #-}
1+{-# LANGUAGE DeriveGeneric, OverloadedStrings, TemplateHaskell #-}
3module Main where
3module Main where
@@ -6,16 +6,13 @@ import Database.Bloodhound.Client
6import Data.Aeson
6import Data.Aeson
7import Data.DeriveTH
7import Data.DeriveTH
8import Data.Maybe (fromJust)
8import Data.Maybe (fromJust)
9−import Data.Time.Clock (UTCTime)
9+import Data.Time.Calendar (Day(..))
10+import Data.Time.Clock (secondsToDiffTime, UTCTime(..))
10import Data.Text (Text)
11import Data.Text (Text)
11import GHC.Generics (Generic)
12import GHC.Generics (Generic)
12import Network.HTTP.Conduit
13import Network.HTTP.Conduit
13import qualified Network.HTTP.Types.Status as NHTS
14import qualified Network.HTTP.Types.Status as NHTS
15import Test.Hspec
15import Test.Hspec
16−import Test.QuickCheck
17−import Test.QuickCheck.Gen
18−import Test.QuickCheck.Instances
21testServer = Server "http://localhost:9200"
18testServer = Server "http://localhost:9200"
@@ -31,13 +28,11 @@ data Tweet = Tweet { user :: Text
32instance ToJSON Tweet
29instance ToJSON Tweet
33instance FromJSON Tweet
30instance FromJSON Tweet
34−$(derive makeArbitrary ''Tweet)
36−newTweet :: IO Tweet
32+exampleTweet = Tweet { user = "bitemyapp"
37−newTweet = do
33+ , postDate = UTCTime (ModifiedJulianDay 55000)
38− g <- newStdGen
34+ (secondsToDiffTime 10)
39− let seed = head (take 1 $ randoms g)
35+ , message = "Use haskell!" }
40− return (unGen arbitrary (mkStdGen seed) 100)
42main :: IO ()
37main :: IO ()
43main = hspec $ do
38main = hspec $ do
@@ -51,11 +46,10 @@ main = hspec $ do
51 validateStatus deleteResp 200
46 validateStatus deleteResp 200
52 describe "document API" $ do
47 describe "document API" $ do
53 it "indexes, gets, and then deletes the generated document" $ do
48 it "indexes, gets, and then deletes the generated document" $ do
54− tweet <- newTweet
49+ let tweet = exampleTweet
55 let encoded = encode tweet
50 let encoded = encode tweet
56 created <- createExampleIndex
51 created <- createExampleIndex
57 docCreated <- indexDocument (Server "http://localhost:9200") "twitter" "tweet" tweet "1"
52 docCreated <- indexDocument (Server "http://localhost:9200") "twitter" "tweet" tweet "1"
59 docInserted <- getDocument (Server "http://localhost:9200") "twitter" "tweet" "1"
53 docInserted <- getDocument (Server "http://localhost:9200") "twitter" "tweet" "1"
60 let newTweet = decode (responseBody docInserted) :: Maybe (EsResult Tweet)
54 let newTweet = decode (responseBody docInserted) :: Maybe (EsResult Tweet)
61 deleted <- deleteExampleIndex
55 deleted <- deleteExampleIndex