ribosome-host-0.9.9.9: test/Ribosome/Host/Test/CommandRegisterTest.hs
module Ribosome.Host.Test.CommandRegisterTest where
import Conc (interpretAtomic)
import Polysemy.Test (UnitTest, assertJust)
import Ribosome.Host.Api.Effect (nvimCommand, nvimGetVar, nvimSetVar)
import Ribosome.Host.Data.CommandRegister (CommandRegister (CommandRegister))
import Ribosome.Host.Data.Execution (Execution (Sync))
import Ribosome.Host.Data.Report (resumeReport)
import Ribosome.Host.Data.RpcError (RpcError)
import Ribosome.Host.Data.RpcHandler (Handler, RpcHandler)
import Ribosome.Host.Effect.Rpc (Rpc)
import Ribosome.Host.Embed (embedNvim)
import Ribosome.Host.Handler (rpcCommand)
import Ribosome.Host.Unit.Run (runTest)
var :: Text
var =
"test_var"
reg ::
Member (Rpc !! RpcError) r =>
CommandRegister ->
Handler r ()
reg (CommandRegister r) =
resumeReport (nvimSetVar var r)
handlers ::
∀ r .
Members [AtomicState Int, Rpc !! RpcError] r =>
[RpcHandler r]
handlers =
[
rpcCommand "Register" Sync reg
]
test_register :: UnitTest
test_register =
runTest $ interpretAtomic 0 $ embedNvim handlers do
nvimCommand "Register x"
assertJust @Text "x" =<< nvimGetVar var