packages feed

mmark-ext-0.2.1.3: tests/Text/MMark/Extension/TestUtils.hs

module Text.MMark.Extension.TestUtils
  ( withExt,
  )
where

import Data.Text (Text)
import qualified Data.Text.Lazy as TL
import qualified Lucid as L
import Test.Hspec
import qualified Text.MMark as MMark

-- | Feed input into MMark parser, apply an extension, render the parsed
-- document and demand that it matches the given example.
withExt ::
  -- | MMark extension to use
  MMark.Extension ->
  -- | Input for the parser
  Text ->
  -- | Expected output of the render
  Text ->
  Expectation
withExt ext input expected = do
  let Right doc = MMark.parse "" input
      actual =
        TL.toStrict
          . L.renderText
          . MMark.render
          . MMark.useExtension ext
          $ doc
  actual `shouldBe` expected