{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} import AcousticBrainz.HighLevel import AcousticBrainz.LowLevel import MusicBrainz import Data.Aeson import Data.String import qualified Data.Text as Text import qualified Data.Text.IO as Text import qualified Data.Text.Lazy.Encoding as Lazy import System.FilePath import Test.Tasty import Test.Tasty.Golden (findByExtension, goldenVsString) import Text.Pretty.Simple main :: IO () main = do a <- highLevelTests b <- lowLevelTests defaultMain $ testGroup "Golden tests" [a, b] highLevelTests :: IO TestTree highLevelTests = do files <- findByExtension [".highlevel"] "test" return $ testGroup "High level tests" $ do file <- files let goldenFile = addExtension file ".golden" return $ goldenVsString file goldenFile $ Text.readFile file <&> Text.strip >>= mkMusicBrainzIdentifier >>= getHighLevelData <&> pShowNoColor <&> Lazy.encodeUtf8 lowLevelTests :: IO TestTree lowLevelTests = do files <- findByExtension [".lowlevel"] "test" return $ testGroup "Low level tests" $ do file <- files let goldenFile = addExtension file ".golden" return $ goldenVsString file goldenFile $ Text.readFile file <&> Text.strip >>= mkMusicBrainzIdentifier >>= getLowLevelData <&> pShowNoColor <&> Lazy.encodeUtf8