@@ -278,6 +278,9 @@ instance Arbitrary a => Arbitrary (SearchHits a) where
278 hs <- arbitrary
278 hs <- arbitrary
279 return $ SearchHits tot score hs
279 return $ SearchHits tot score hs
281+getSource :: EsResult a -> Maybe a
282+getSource = fmap _source . foundResult
281main :: IO ()
284main :: IO ()
282main = hspec $ do
285main = hspec $ do
@@ -298,7 +301,13 @@ main = hspec $ do
298 docInserted <- getDocument testIndex testMapping (DocId "1")
301 docInserted <- getDocument testIndex testMapping (DocId "1")
299 let newTweet = eitherDecode
302 let newTweet = eitherDecode
300 (responseBody docInserted) :: Either String (EsResult Tweet)
303 (responseBody docInserted) :: Either String (EsResult Tweet)
301− liftIO $ (fmap _source newTweet `shouldBe` Right exampleTweet)
304+ liftIO $ (fmap getSource newTweet `shouldBe` Right (Just exampleTweet))
306+ it "produces a parseable result when looking up a bogus document" $ withTestEnv $ do
307+ doc <- getDocument testIndex testMapping (DocId "bogus")
308+ let noTweet = eitherDecode
309+ (responseBody doc) :: Either String (EsResult Tweet)
310+ liftIO $ fmap foundResult noTweet `shouldBe` Right Nothing
303 it "can use optimistic concurrency control" $ withTestEnv $ do
312 it "can use optimistic concurrency control" $ withTestEnv $ do
304 let ev = ExternalDocVersion minBound
313 let ev = ExternalDocVersion minBound
@@ -344,8 +353,8 @@ main = hspec $ do
344 let maybeFirst = eitherDecode $ responseBody fDoc :: Either String (EsResult BulkTest)
353 let maybeFirst = eitherDecode $ responseBody fDoc :: Either String (EsResult BulkTest)
345 let maybeSecond = eitherDecode $ responseBody sDoc :: Either String (EsResult BulkTest)
354 let maybeSecond = eitherDecode $ responseBody sDoc :: Either String (EsResult BulkTest)
346 liftIO $ do
355 liftIO $ do
347− fmap _source maybeFirst `shouldBe` Right firstTest
356+ fmap getSource maybeFirst `shouldBe` Right (Just firstTest)
348− fmap _source maybeSecond `shouldBe` Right secondTest
357+ fmap getSource maybeSecond `shouldBe` Right (Just secondTest)
351 describe "query API" $ do
360 describe "query API" $ do
@@ -377,8 +386,8 @@ main = hspec $ do
378 it "returns document for multi-match query" $ withTestEnv $ do
387 it "returns document for multi-match query" $ withTestEnv $ do
379 _ <- insertData
388 _ <- insertData
380− let fields = [FieldName "user", FieldName "message"]
389+ let flds = [FieldName "user", FieldName "message"]
381− let query = QueryMultiMatchQuery $ mkMultiMatchQuery fields (QueryString "bitemyapp")
390+ let query = QueryMultiMatchQuery $ mkMultiMatchQuery flds (QueryString "bitemyapp")
382 let search = mkSearch (Just query) Nothing
391 let search = mkSearch (Just query) Nothing
383 myTweet <- searchTweet search
392 myTweet <- searchTweet search