packages feed

microformats2-parser-1.0.1.9: test-suite/Data/Microformats2/Jf2Spec.hs

{-# LANGUAGE NoImplicitPrelude, QuasiQuotes, OverloadedStrings, UnicodeSyntax #-}

module Data.Microformats2.Jf2Spec (spec) where

import           Prelude.Compat
import           Test.Hspec hiding (shouldBe)
import           Test.Hspec.Expectations.Pretty (shouldBe)
import           TestCommon
import           Data.Microformats2.Jf2

spec ∷ Spec
spec = do
  describe "mf2ToJf2" $ do
    it "converts microformats2 to JF2" $ do
      mf2ToJf2 [json|{}|] `shouldBe` [json|{}|]
      mf2ToJf2 [json|[{"type": ["h-meme", "lol"]}]|] `shouldBe` [json|[{"type": "meme"}]|]
      mf2ToJf2 [json|{"type": ["h-meme", "lol"]}|] `shouldBe` [json|{"type": "meme"}|]
      mf2ToJf2 [json|{"type": []}|] `shouldBe` [json|{"type": null}|]
      mf2ToJf2 [json|{"type": ["h-ello"], "properties": {"category": ["Dank", "Memes"]}}|]
        `shouldBe` [json|{"type": "ello", "category": ["Dank", "Memes"]}|]
      mf2ToJf2 [json|{"type": ["h-ello"], "properties": {"category": ["Memes"]}}|]
        `shouldBe` [json|{"type": "ello", "category": "Memes"}|]
      mf2ToJf2 [json|{"type": ["h-entry"], "properties": {"category": ["Memes"], "author": [{"type": ["h-card"], "properties": {"name": ["Alice"]}}]}}|]
        `shouldBe` [json|{"type": "entry", "category": "Memes", "author": {"type": "card", "name": "Alice"}}|]
      mf2ToJf2 [json|{"type": ["h-entry"], "properties": {"category": ["Memes"], "author": ["Bob", {"type": ["h-card"], "properties": {"name": ["Alice"]}}]}}|]
        `shouldBe` [json|{"type": "entry", "category": "Memes", "author": ["Bob", {"type": "card", "name": "Alice"}]}|]
      mf2ToJf2 [json|{"type": ["h-entry"], "children": [{"type": ["h-card"], "properties": {"name": ["Alice"]}}]}|]
        `shouldBe` [json|{"type": "entry", "children": [{"type": "card", "name": "Alice"}]}|]
      mf2ToJf2 [json|{ "items":
        [
          {
            "type": [ "h-entry" ],
            "properties": {
              "author": [
                {
                  "type": [ "h-card" ],
                  "properties": {
                    "name": [ "A. Developer" ],
                    "url": [ "http://example.com" ]
                  },
                  "value": "A. Developer"
                }
              ],
              "name": [ "Hello World" ],
              "summary": [ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus imperdiet ultrices pulvinar." ],
              "url": [ "http://example.com/2015/10/21" ],
              "published": [ "2015-10-21T12:00:00-0700" ],
              "content": [
                {
                  "html": "<p>Donec dapibus enim lacus, <i>a vehicula magna bibendum non</i>. Phasellus id lacinia felis, vitae pellentesque enim. Sed at quam dui. Suspendisse accumsan, est id pulvinar consequat, urna ex tincidunt enim, nec sodales lectus nulla et augue. Cras venenatis vehicula molestie. Donec sagittis elit orci, sit amet egestas ex pharetra in.</p>",
                  "value": "Donec dapibus enim lacus, a vehicula magna bibendum non. Phasellus id lacinia felis, vitae pellentesque enim. Sed at quam dui. Suspendisse accumsan, est id pulvinar consequat, urna ex tincidunt enim, nec sodales lectus nulla et augue. Cras venenatis vehicula molestie. Donec sagittis elit orci, sit amet egestas ex pharetra in."
                }
              ]
            }
          }
        ]
      }|] `shouldBe` [json|{
        "type": "entry",
        "author": {
          "type": "card",
          "url": "http://example.com",
          "name": "A. Developer"
        },
        "url": "http://example.com/2015/10/21",
        "published": "2015-10-21T12:00:00-0700",
        "name": "Hello World",
        "summary": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus imperdiet ultrices pulvinar.",
        "content": {
          "html": "<p>Donec dapibus enim lacus, <i>a vehicula magna bibendum non</i>. Phasellus id lacinia felis, vitae pellentesque enim. Sed at quam dui. Suspendisse accumsan, est id pulvinar consequat, urna ex tincidunt enim, nec sodales lectus nulla et augue. Cras venenatis vehicula molestie. Donec sagittis elit orci, sit amet egestas ex pharetra in.</p>",
          "text": "Donec dapibus enim lacus, a vehicula magna bibendum non. Phasellus id lacinia felis, vitae pellentesque enim. Sed at quam dui. Suspendisse accumsan, est id pulvinar consequat, urna ex tincidunt enim, nec sodales lectus nulla et augue. Cras venenatis vehicula molestie. Donec sagittis elit orci, sit amet egestas ex pharetra in."
        }
      }|]