diff --git a/test/PandocSpec.hs b/test/PandocSpec.hs index d43579b00..579fd1747 100644 --- a/test/PandocSpec.hs +++ b/test/PandocSpec.hs @@ -7,6 +7,7 @@ import Utils.Print import qualified Data.Set as Set import qualified Data.Map.Lazy as Map import qualified Data.Foldable as Fold +import qualified Data.Text as T import Text.Pandoc import Text.Pandoc.Builder @@ -21,8 +22,8 @@ instance Arbitrary ArbitraryMeta where = do (x1 :: Inlines) <- arbitrary (x2 :: [Inlines]) <- filter (not . Fold.null) <$> arbitrary (x3 :: Inlines) <- arbitrary - (x4 :: [(Text, Text)]) <- arbitrary - (x5 :: [(Text, Bool)]) <- arbitrary + (x4 :: [(Text, Text)]) <- filter (not . T.null . fst) <$> arbitrary + (x5 :: [(Text, Bool)]) <- filter (not . T.null . fst) <$> arbitrary return $ ArbitraryMeta $ setMeta "title" x1 $ setMeta "author" x2 @@ -61,7 +62,8 @@ spec = do metaOriginal = unArbitraryMeta abMetaOriginal pd = Pandoc metaOriginal blocks (Pandoc newMeta _) = addMeta metaOverwrite pd - mlist newMeta `shouldContain` mlist metaOverwrite + keysToPreserve = Map.keysSet $ unMeta metaOverwrite + mlist metaOverwrite `shouldMatchList` Map.toList (unMeta newMeta `Map.restrictKeys` keysToPreserve) it "should preserve untouched settings" $ do (abMetaOverwrite, abMetaOriginal, blocks) <- generate arbitrary @@ -70,7 +72,10 @@ spec = do metaOriginal = unArbitraryMeta abMetaOriginal pd = Pandoc metaOriginal blocks (Pandoc newMeta _) = addMeta metaOverwrite pd - mlist newMeta `shouldContain` Map.toList (unMeta metaOriginal `Map.difference` unMeta metaOverwrite) + keysToPreserve = Map.keysSet (unMeta metaOriginal) `Set.difference` Map.keysSet (unMeta metaOverwrite) + Map.toList (Map.restrictKeys (unMeta newMeta) keysToPreserve) + `shouldMatchList` + Map.toList (Map.restrictKeys (unMeta metaOriginal) keysToPreserve) it "should preserve document blocks" $ do (metaOverwrite, pd) <- generate arbitrary