packages feed

proteome-0.3.5.0: test/u/AddSpec.hs

{-# OPTIONS_GHC -F -pgmF htfpp #-}

module AddSpec(
  htf_thisModulesTests
) where

import Control.Monad.IO.Class (liftIO)
import System.FilePath ((</>))
import Test.Framework
import Ribosome.Config.Setting (updateSetting)
import qualified Ribosome.Data.Ribo as Ribo (inspect)
import Ribosome.Test.Unit (fixture)
import Proteome.Data.Proteome (Proteome)
import Proteome.Add (proAdd)
import Proteome.Data.Env (projects)
import Proteome.Data.AddOptions (AddOptions(AddOptions))
import Proteome.Data.Project (
  ProjectName(ProjectName),
  ProjectType(ProjectType),
  ProjectLang(ProjectLang),
  ProjectRoot(ProjectRoot),
  ProjectMetadata(DirProject),
  Project(Project),
  )
import qualified Proteome.Settings as S (projectBaseDirs)
import Proteome.Test.Unit (specWithDef)
import Config (vars)

flag :: String
flag = "flagellum"

hask :: String
hask = "haskell"

n :: ProjectName
n = ProjectName flag

tp :: ProjectType
tp = ProjectType hask

l :: ProjectLang
l = ProjectLang hask

addSpec :: Proteome ()
addSpec = do
  projectsDir <- fixture "projects"
  updateSetting S.projectBaseDirs [projectsDir]
  proAdd $ AddOptions n tp
  ps <- Ribo.inspect projects
  let root = projectsDir </> hask </> flag
  liftIO $ assertEqual [Project (DirProject n (ProjectRoot root) (Just tp)) [] (Just l) []] ps

test_add :: IO ()
test_add = vars >>= specWithDef addSpec