packages feed

hob-0.0.1.0: test/Hob/Command/NewTabSpec.hs

module Hob.Command.NewTabSpec (main, spec) where

import Test.Hspec

import Graphics.UI.Gtk

import qualified Hob.Context           as HC
import qualified Hob.Context.UiContext as HC

import HobTest.Context.Stubbed
import HobTest.Editor

main :: IO ()
main = hspec spec

spec :: Spec
spec =
  describe "new tab command" $ do
    it "creates a new unnamed file" $ do
      ctx <- launchNewFile
      pagesAfterActivatingDirectory <- getNumberOfEditorPages ctx
      pagesAfterActivatingDirectory `shouldBe` 1

    it "focuses the tab with the open file if requested to open an already loaded file" $ do
      ctx <- loadStubbedContext
      let notebook = HC.mainNotebook . HC.uiContext $ ctx
      launchEditorTab ctx "/xxx/testName.hs"
      currentPageOfFirstLoadedFile <- notebookGetCurrentPage notebook
      launchEditorTab ctx "/xxx/c"
      pagesBeforeOpeningExistingFile <- notebookGetNPages notebook
      launchEditorTab ctx "/xxx/testName.hs"
      currentPageAfterLoadingTheFirstLoadedFile <- notebookGetCurrentPage notebook
      pagesAfterOpeningExistingFile <- notebookGetNPages notebook
      pagesAfterOpeningExistingFile `shouldBe` pagesBeforeOpeningExistingFile
      currentPageAfterLoadingTheFirstLoadedFile `shouldBe` currentPageOfFirstLoadedFile