ribosome-0.9.9.9: test/Ribosome/Test/WindowTest.hs
module Ribosome.Test.WindowTest where
import Polysemy.Test (UnitTest, assertEq, unitTest, (===))
import Test.Tasty (TestTree, testGroup)
import Ribosome.Api.Window (ensureMainWindow)
import Ribosome.Host.Api.Data (Window)
import Ribosome.Host.Api.Effect (bufferSetOption, nvimCommand, vimGetCurrentBuffer, vimGetCurrentWindow, vimGetWindows)
import Ribosome.Host.Class.Msgpack.Encode (toMsgpack)
import Ribosome.Host.Effect.Rpc (Rpc)
import Ribosome.Host.Test.Run (embedTest_)
setCurrentNofile ::
Member Rpc r =>
Sem r ()
setCurrentNofile = do
buf <- vimGetCurrentBuffer
bufferSetOption buf "buftype" (toMsgpack ("nofile" :: Text))
createNofile ::
Member Rpc r =>
Sem r Window
createNofile = do
initialWindow <- vimGetCurrentWindow
nvimCommand "new"
setCurrentNofile
pure initialWindow
test_findMainWindowExisting :: UnitTest
test_findMainWindowExisting =
embedTest_ do
initialWindow <- createNofile
(initialWindow ===) =<< ensureMainWindow
test_findMainWindowCreate :: UnitTest
test_findMainWindowCreate =
embedTest_ do
setCurrentNofile
void createNofile
void ensureMainWindow
assertEq 3 . length =<< vimGetWindows
test_window :: TestTree
test_window =
testGroup "window" [
unitTest "find existing" test_findMainWindowExisting,
unitTest "find create" test_findMainWindowCreate
]