packages feed

ribosome-0.2.0.0: test/u/RiboSpec.hs

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

module RiboSpec(
  htf_thisModulesTests,
) where

import Control.Monad.IO.Class (liftIO)
import Data.Bifunctor (Bifunctor(..))
import Data.Default (Default(def))
import Neovim
import Ribosome.Api.Buffer
import Ribosome.Control.Monad.Ribo
import Ribosome.Test.Unit (unitSpec)
import Test.Framework
import UnliftIO.STM

newtype Env =
  Env Int
  deriving (Eq, Show)

rib :: RiboT Env (Doc AnsiStyle) [String]
rib = do
  a <- nvim currentBufferContent
  nvim $ vim_command' "tabnew"
  return a

riboSpec :: Ribo (TVar Env) ()
riboSpec = do
  let target = ["line 1", "line 2"]
  _ <- setCurrentBufferContent target
  content <- unsafeToNeovim $ first (const ()) rib
  liftIO $ assertEqual target content

test_ribo :: IO ()
test_ribo = do
  t <- newTVarIO (Env 5)
  unitSpec def t riboSpec