Upgrade to haskell-lsp 0.8.0.0
[lsp-test.git] / test / Test.hs
index d524ee4ffe15c666c8feaabdd5c518e804782a58..73a7b45431a41f0974977e759c3b477f86e68060 100644 (file)
@@ -18,7 +18,10 @@ import           GHC.Generics
 import           Language.Haskell.LSP.Messages
 import           Language.Haskell.LSP.Test
 import           Language.Haskell.LSP.Test.Replay
-import           Language.Haskell.LSP.Types as LSP hiding (capabilities, message)
+import           Language.Haskell.LSP.Types
+import           Language.Haskell.LSP.Types.Lens as LSP hiding
+  (capabilities, message, rename, applyEdit)
+import           Language.Haskell.LSP.Types.Capabilities as LSP
 import           System.Timeout
 
 {-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
@@ -118,9 +121,10 @@ main = hspec $ do
             in runSession "hie --lsp" fullCaps "test/data/renamePass" sesh
               `shouldThrow` selector
 
-  describe "replaySession" $ do
-    it "passes a test" $
-      replaySession "hie --lsp" "test/data/renamePass"
+  describe "replaySession" $
+    -- This is too fickle at the moment
+    -- it "passes a test" $
+    --   replaySession "hie --lsp" "test/data/renamePass"
     it "fails a test" $
       let selector (ReplayOutOfOrder _ _) = True
           selector _ = False
@@ -176,6 +180,13 @@ main = hspec $ do
         liftIO $ contents `shouldBe` "main :: IO Int\nmain = return 42\n"
         noDiagnostics
 
+  describe "getCodeActions" $
+    it "works" $ runSession "hie" fullCaps "test/data/refactor" $ do
+      doc <- openDoc "Main.hs" "haskell"
+      waitForDiagnostics
+      [CACodeAction action] <- getCodeActions doc (Range (Position 1 14) (Position 1 18))
+      liftIO $ action ^. title `shouldBe` "Apply hint:Redundant bracket"
+
   describe "getAllCodeActions" $
     it "works" $ runSession "hie --lsp" fullCaps "test/data/refactor" $ do
       doc <- openDoc "Main.hs" "haskell"
@@ -199,7 +210,7 @@ main = hspec $ do
       liftIO $ do
         mainSymbol ^. name `shouldBe` "main"
         mainSymbol ^. kind `shouldBe` SkFunction
-        mainSymbol ^. range `shouldBe` Range (Position 3 0) (Position 3 4)
+        mainSymbol ^. range `shouldBe` Range (Position 3 0) (Position 5 30)
 
   describe "applyEdit" $ do
     it "increments the version" $ runSession "hie --lsp" docChangesCaps "test/data/renamePass" $ do