git.iko.soy/typeable/bloodhound
on 977d2e8 help sign in
58 lines 1.7 kB history raw
1{-# LANGUAGE OverloadedStrings #-}
3module Test.Import
4 ( module X
5 , module Test.Import
6 ) where
9import Control.Applicative as X
10import Control.Exception as X (evaluate)
11import Control.Monad as X
12import Control.Monad.Catch as X
13import Control.Monad.Reader as X
14import Data.Aeson as X
15import Data.Aeson.TH as X
16import Data.Aeson.Types as X (parseEither)
17import Data.Maybe as X
18import Data.List.NonEmpty as X (NonEmpty(..))
19import Data.Monoid as X
20import Data.Ord as X (comparing)
21import Data.Proxy as X
22import Data.Text as X (Text)
23import Data.Time.Calendar as X (Day(..), fromGregorian)
24import Data.Time.Clock as X
25import Data.Typeable as X
26import Database.Bloodhound as X hiding (key)
27import Lens.Micro as X
28import Lens.Micro.Aeson as X
29import Network.HTTP.Client as X hiding (Proxy, fileSize)
30import System.IO.Temp as X
31import System.PosixCompat.Files as X
32import Test.Hspec as X
33import Test.Hspec.QuickCheck as X (prop)
34import Test.QuickCheck as X hiding (Result, Success, isSuccess)
35import Test.QuickCheck.Property.Monoid as X (T (..), eq, prop_Monoid)
36import Text.Pretty.Simple as X (pPrint)
38import qualified Data.List as L
40noDuplicates :: Eq a => [a] -> Bool
41noDuplicates xs = L.nub xs == xs
43getSource :: EsResult a -> Maybe a
44getSource = fmap _source . foundResult
46grabFirst :: Either EsError (SearchResult a) -> Either EsError a
47grabFirst r =
48 case fmap (hitSource . head . hits . searchHits) r of
49 (Left e) -> Left e
50 (Right Nothing) -> Left (EsError 500 "Source was missing")
51 (Right (Just x)) -> Right x
53when' :: Monad m => m Bool -> m () -> m ()
54when' b f = b >>= \x -> when x f
56headMay :: [a] -> Maybe a
57headMay (x : _) = Just x
58headMay _ = Nothing