hob-0.0.1.0: test/Hob/Command/FocusSidebarSpec.hs
module Hob.Command.FocusSidebarSpec (main, spec) where
import Graphics.UI.Gtk
import Hob.Command.FocusSidebar
import Hob.Context
import qualified Hob.Context.UiContext as HC
import Test.Hspec
import HobTest.Context.Default
import HobTest.Context.Stubbed
import HobTest.Control
import HobTest.Editor
main :: IO ()
main = hspec spec
spec :: Spec
spec =
describe "focus sidebar" $ do
it "focuses the sidebar" $ do
ctx <- loadDefaultContext
focused <- focusSidebarAndReturnState ctx
focused `shouldBe` True
it "can sync the open editor path in sidebar" $ do
ctx <- loadStubbedContext
launchEditorTab ctx "/xxx/a/b"
path <- syncSidebarAndReturnSelectedPath ctx
focused <- sidebarFocusState ctx
path `shouldBe` [0, 0]
focused `shouldBe` True
it "can sync the open editor path in sidebar when there is a directory named as the file's basename" $ do
ctx <- loadStubbedContext
launchEditorTab ctx "/xxx/a.b"
path <- syncSidebarAndReturnSelectedPath ctx
focused <- sidebarFocusState ctx
path `shouldBe` [1]
focused `shouldBe` True
sidebarFocusState :: Context -> IO Bool
sidebarFocusState = widgetGetIsFocus . HC.sidebarTree . uiContext
focusSidebarAndReturnState :: Context -> IO Bool
focusSidebarAndReturnState ctx = do
runCtxActions ctx $ commandExecute focusSidebarCommandHandler
sidebarFocusState ctx
syncSidebarAndReturnSelectedPath :: Context -> IO TreePath
syncSidebarAndReturnSelectedPath ctx = do
runCtxActions ctx $ commandExecute syncFocusSidebarCommandHandler
pos <- treeViewGetCursor . HC.sidebarTree . uiContext $ ctx
return $ fst pos