neuron-1.0.0.0: test/Neuron/Zettelkasten/Zettel/ParserSpec.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Neuron.Zettelkasten.Zettel.ParserSpec
( spec,
)
where
import Data.TagTree (Tag (Tag))
import Neuron.Reader.Markdown (parseMarkdown)
import Neuron.Reader.Type (ZettelFormat (ZettelFormat_Markdown))
import Neuron.Zettelkasten.ID (unsafeMkZettelID)
import Neuron.Zettelkasten.Zettel
( Zettel,
ZettelT (zettelTags),
sansContent,
)
import Neuron.Zettelkasten.Zettel.Parser (parseZettel)
import Relude
import Test.Hspec
spec :: Spec
spec = do
describe "inline tags" $ do
let parseSomeZettel =
sansContent . parseZettel ZettelFormat_Markdown parseMarkdown "<test>" (unsafeMkZettelID "note.md")
it "simple" $ do
let z :: Zettel = parseSomeZettel "An #inline tag"
zettelTags z `shouldBe` [Tag "inline"]
it "hierarchical" $ do
let z :: Zettel = parseSomeZettel "An #foo/bar/baz tag"
zettelTags z `shouldBe` [Tag "foo/bar/baz"]
it "allows URLs with a hash" $ do
pendingWith "#397"
let z :: Zettel = parseSomeZettel "Some http://www.google.com/#foo url"
zettelTags z `shouldBe` []