ribosome-test-0.4.0.0: test/Ribosome/Test/AutocmdTest.hs
module Ribosome.Test.AutocmdTest where
import Hedgehog ((===))
import Neovim (Plugin(..))
import TestError (RiboTest, handleTestError)
import Ribosome.Control.Monad.Ribo (NvimE)
import Ribosome.Control.Ribosome (Ribosome, newRibosome)
import Ribosome.Msgpack.Encode (MsgpackEncode(toMsgpack))
import Ribosome.Nvim.Api.IO (vimCommand, vimGetVar, vimSetVar)
import Ribosome.Orphans ()
import Ribosome.Plugin (autocmd, riboPlugin, rpcHandler)
import Ribosome.Test.Await (await)
import Ribosome.Test.Embed (integrationSpecDef)
import Ribosome.Test.Orphans ()
import Ribosome.Test.Run (UnitTest)
varName :: Text
varName =
"result"
result :: Int
result =
5
testAuto ::
NvimE e m =>
m ()
testAuto =
vimSetVar varName (toMsgpack result)
$(return [])
autocmdPlugin :: IO (Plugin (Ribosome ()))
autocmdPlugin = do
env <- newRibosome "test" ()
return $ riboPlugin "test" env funcs [] handleTestError def
where
funcs = [$(rpcHandler (autocmd "BufWritePre") 'testAuto)]
autocmdSpec :: RiboTest ()
autocmdSpec = do
() <- vimCommand "doautocmd BufWritePre"
await (result ===) (vimGetVar varName)
test_autocmd :: UnitTest
test_autocmd = do
plug <- liftIO autocmdPlugin
integrationSpecDef plug autocmdSpec