Fix embarassing error with publishDiagnosticsNotification
[lsp-test.git] / test / ParsingTests.hs
1 {-# LANGUAGE OverloadedStrings #-}
2 module ParsingTests where
3
4 import Control.Lens hiding (List)
5 import Language.Haskell.LSP.Messages
6 import Language.Haskell.LSP.Test
7 import Language.Haskell.LSP.Types
8 import Data.Conduit
9 import Data.Conduit.Parser
10 import Test.Hspec
11
12 parsingSpec :: Spec
13 parsingSpec =
14   describe "diagnostics" $ do
15     let testDiag = NotPublishDiagnostics
16                    (NotificationMessage "2.0"
17                                        TextDocumentPublishDiagnostics
18                                        (PublishDiagnosticsParams (Uri "foo")
19                                                                  (List [])))
20     it "get picked up" $ do
21       let 
22           source = yield testDiag
23           session = do
24             diags <- publishDiagnosticsNotification
25             return $ diags ^. params . uri
26       runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"
27     it "get picked up after skipping others before" $ do
28       let testDiag = NotPublishDiagnostics
29                     (NotificationMessage "2.0"
30                                           TextDocumentPublishDiagnostics
31                                           (PublishDiagnosticsParams (Uri "foo")
32                                                                     (List [])))
33           notTestDiag = NotLogMessage (NotificationMessage "2.0" WindowLogMessage (LogMessageParams MtLog "foo"))
34           source = yield notTestDiag >> yield testDiag
35           session = do
36             diags <- skipManyTill notification publishDiagnosticsNotification
37             return $ diags ^. params . uri
38       runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"