ribosome-host-0.9.9.9: test/Ribosome/Host/Test/EventTest.hs
module Ribosome.Host.Test.EventTest where
import Conc (interpretSync, withAsync_)
import qualified Polysemy.Conc.Sync as Sync
import Polysemy.Test (UnitTest, assertJust)
import Polysemy.Time (Seconds (Seconds))
import qualified Ribosome.Host.Api.Data as Data
import Ribosome.Host.Class.Msgpack.Encode (toMsgpack)
import Ribosome.Host.Data.Event (Event (Event))
import qualified Ribosome.Host.Effect.Rpc as Rpc
import Ribosome.Host.Embed (embedNvim_)
import Ribosome.Host.Unit.Run (runTest)
listenEvent ::
Members [EventConsumer res Event, Sync Event] r =>
Sem r ()
listenEvent =
subscribe do
void . Sync.putWait (Seconds 5) =<< consume @Event
target :: Event
target =
Event "nvim_error_event" [toMsgpack (0 :: Int), toMsgpack ("Vim(write):E32: No file name" :: Text)]
test_errorEvent :: UnitTest
test_errorEvent =
runTest $ interpretSync $ embedNvim_ do
withAsync_ listenEvent do
Rpc.notify (Data.nvimCommand "write")
assertJust target =<< Sync.wait (Seconds 5)