packages feed

ribosome-test-0.4.0.0: test/Ribosome/Test/WindowTest.hs

module Ribosome.Test.WindowTest where

import Hedgehog ((===))
import TestError (RiboTest)

import Ribosome.Api.Window (ensureMainWindow)
import Ribosome.Msgpack.Encode (toMsgpack)
import Ribosome.Nvim.Api.Data (Window)
import Ribosome.Nvim.Api.IO (bufferSetOption, vimCommand, vimGetCurrentBuffer, vimGetCurrentWindow, vimGetWindows)
import Ribosome.Test.Run (UnitTest)
import Ribosome.Test.Unit (unitSpecDef')

setCurrentNofile :: RiboTest ()
setCurrentNofile = do
  buf <- vimGetCurrentBuffer
  bufferSetOption buf "buftype" (toMsgpack ("nofile" :: Text))

createNofile :: RiboTest Window
createNofile = do
  initialWindow <- vimGetCurrentWindow
  vimCommand "new"
  setCurrentNofile
  return initialWindow

findMainWindowExistingSpec :: RiboTest ()
findMainWindowExistingSpec = do
  initialWindow <- createNofile
  (initialWindow ===) =<< ensureMainWindow

test_findMainWindowExisting :: UnitTest
test_findMainWindowExisting =
  unitSpecDef' findMainWindowExistingSpec

findMainWindowCreateSpec :: RiboTest ()
findMainWindowCreateSpec = do
  setCurrentNofile
  void createNofile
  void ensureMainWindow
  (3 ===) =<< length <$> vimGetWindows

test_findMainWindowCreate :: UnitTest
test_findMainWindowCreate =
  unitSpecDef' findMainWindowCreateSpec