ribosome-test-0.9.9.9: lib/Ribosome/Test/Ui.hs
-- |Assertions for Neovim UI elements
module Ribosome.Test.Ui where
import Polysemy.Test (Hedgehog, assertEq, (===))
import Ribosome.Api.Window (currentCursor, cursor)
import Ribosome.Host.Api.Data (Window)
import Ribosome.Host.Api.Effect (nvimListWins)
import Ribosome.Host.Effect.Rpc (Rpc)
-- |Assert the number of windows.
windowCountIs ::
Monad m =>
Members [Rpc, Hedgehog m] r =>
Int ->
Sem r ()
windowCountIs count = do
wins <- nvimListWins
count === length wins
-- |Assert the cursor position in a window.
cursorIs ::
Monad m =>
Members [Rpc, Hedgehog m] r =>
Int ->
Int ->
Window ->
Sem r ()
cursorIs line col =
assertEq (line, col) <=< cursor
-- |Assert the cursor position in the current window.
currentCursorIs ::
Monad m =>
Members [Rpc, Hedgehog m] r =>
Int ->
Int ->
Sem r ()
currentCursorIs line col =
assertEq (line, col) =<< currentCursor