packages feed

templatise-0.1.0.1: test/initialise/DefaultsSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module DefaultsSpec (spec) where

import Data.Maybe (fromJust)
import qualified Defaults as SUT
import Hooks (withGitRepo)
import Network.URI (parseURI)
import Test.Hspec (Spec, around, describe, it, shouldBe)

spec :: Spec
spec = describe "Defaults" $ do
  describe "dName" $ do
    it "converts origin to project name" $
      SUT.dName defaults `shouldBe` "repository"
  describe "dHomePage" $ do
    it "converts origin to a home page" $
      SUT.dHomePage defaults `shouldBe` fromJust (parseURI "http://github.com/username/repository")
  describe "getDefaults" $ around withGitRepo $ do
    it "inspects the current repository" $ \p -> do
      ds <- SUT.getDefaults
      ds
        `shouldBe` SUT.Defaults
          { SUT.dOrigin = fromJust (parseURI "https://github.com/sentinel/sentinel.git"),
            SUT.dAuthor = "Sentinel",
            SUT.dMaintainer = "sentinel@example.com",
            SUT.dPath = p,
            SUT.dYear = 2023
          }

defaults :: SUT.Defaults
defaults =
  SUT.Defaults
    { SUT.dOrigin = fromJust (parseURI "http://github.com/username/repository.git"),
      SUT.dAuthor = "Forename Surname",
      SUT.dMaintainer = "username@example.com",
      SUT.dPath = ".",
      SUT.dYear = 1970
    }