{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} import Data.Text import Data.Yaml.Pretty.Extras import GHC.Generics import Test.Hspec import qualified Data.ByteString as BS data Person = Person { mood :: Text, job :: Text } deriving (Eq, Generic, FromJSON, Show, ToJSON) data Conf = Conf { name :: Text, kind :: Text, people :: [Person] } deriving (Eq, Generic, FromJSON, Show, ToJSON) instance ToPrettyYaml Conf where fieldOrder = const ["name", "kind", "people", "mood", "job"] main :: IO () main = hspec $ do describe "Data.Yaml.Pretty.Extras" $ do it "prints correctly" $ do Just x <- either (error . show) id <$> decodeFileEither "test/mock.yaml" :: IO (Maybe Conf) BS.readFile "test/mock.yaml" `shouldReturn` (toPrettyYaml x)