packages feed

bloodhound-0.23.0.0: tests/TestsUtils/Import.hs

{-# LANGUAGE OverloadedStrings #-}

module TestsUtils.Import
  ( module X,
    module TestsUtils.Import,
  )
where

import Control.Applicative as X
import Control.Exception as X (evaluate)
import Control.Monad as X
import Control.Monad.Catch as X
import Control.Monad.Reader as X
import Data.Aeson as X
import Data.Aeson.TH as X
import Data.Aeson.Types as X (parseEither)
import qualified Data.List as L
import Data.List.NonEmpty as X (NonEmpty (..))
import Data.Maybe as X
import Data.Monoid as X
import Data.Ord as X (comparing)
import Data.Proxy as X
import Data.Text as X (Text)
import Data.Time.Calendar as X (Day (..), fromGregorian)
import Data.Time.Clock as X
import Data.Typeable as X
import Database.Bloodhound.Client as X (BH, MonadBH (..), pitSearch, scanSearch, withBH)
import Database.Bloodhound.Requests as X
import Database.Bloodhound.Types as X hiding (key)
import Network.HTTP.Client as X hiding (Proxy, fileSize)
import System.IO.Temp as X
import System.PosixCompat.Files as X
import Test.Hspec as X
import Test.Hspec.QuickCheck as X (prop)
import Test.QuickCheck as X hiding (Result, Success, isSuccess)
import Test.QuickCheck.Property.Monoid as X (T (..), eq, prop_Monoid)
import Text.Pretty.Simple as X (pPrint)

noDuplicates :: (Eq a) => [a] -> Bool
noDuplicates xs = L.nub xs == xs

getSource :: EsResult a -> Maybe a
getSource = fmap _source . foundResult

grabFirst :: SearchResult a -> Either EsError a
grabFirst r =
  case hitSource $ head $ hits $ searchHits r of
    Nothing -> Left (EsError Nothing "Source was missing")
    Just x -> Right x

when' :: (Monad m) => m Bool -> m () -> m ()
when' b f = b >>= \x -> when x f

headMay :: [a] -> Maybe a
headMay (x : _) = Just x
headMay _ = Nothing