aboutsummaryrefslogtreecommitdiffstats
path: root/test/Test/Common.hs
diff options
context:
space:
mode:
authorVolpeon <github@volpeon.ink>2023-05-28 10:18:49 +0200
committerVolpeon <github@volpeon.ink>2023-05-28 10:18:49 +0200
commitb2c846b0daf9d6e26e1e2a07fecc848b4732baa0 (patch)
treed76c99df7a6e52301d41c59eac1736137062ceac /test/Test/Common.hs
parentCompleted untested Flattening implementation (diff)
downloadhs-jsonld-b2c846b0daf9d6e26e1e2a07fecc848b4732baa0.tar.gz
hs-jsonld-b2c846b0daf9d6e26e1e2a07fecc848b4732baa0.tar.bz2
hs-jsonld-b2c846b0daf9d6e26e1e2a07fecc848b4732baa0.zip
Fixed flattening errors
Diffstat (limited to 'test/Test/Common.hs')
-rw-r--r--test/Test/Common.hs35
1 files changed, 5 insertions, 30 deletions
diff --git a/test/Test/Common.hs b/test/Test/Common.hs
index ffc3264..e386551 100644
--- a/test/Test/Common.hs
+++ b/test/Test/Common.hs
@@ -1,24 +1,20 @@
1module Test.Common (W3CTestList (..), W3CTest (..), W3CTestOption (..), fetchTest, parseExpansionOptions) where 1module Test.Common (W3CTestList (..), W3CTest (..), W3CTestOption (..), documentLoader, fetchTest) where
2 2
3import Data.JLD.Prelude 3import Data.JLD.Prelude
4 4
5import Test.Tasty
6import Test.Tasty.ExpectedFailure (ignoreTestBecause)
7import Test.Tasty.HUnit (assertFailure, testCase, (@?=))
8
9import Data.Aeson (FromJSON (..), Value (..), (.:), (.:?)) 5import Data.Aeson (FromJSON (..), Value (..), (.:), (.:?))
10import Data.Aeson.Types (prependFailure, typeMismatch) 6import Data.Aeson.Types (prependFailure, typeMismatch)
11import Data.JLD (DocumentLoader (..), JLDExpansionParams (..), JLDVersion (..), mimeType, toJldErrorCode) 7import Data.JLD (DocumentLoader (..), mimeType)
12import Data.JLD.Model.URI (parseUri)
13import Data.Maybe (fromJust) 8import Data.Maybe (fromJust)
14import Network.HTTP.Req (GET (..), NoReqBody (..), defaultHttpConfig, header, jsonResponse, req, responseBody, runReq, useHttpsURI, useURI) 9import Network.HTTP.Req (GET (..), NoReqBody (..), defaultHttpConfig, header, jsonResponse, req, responseBody, runReq, useHttpsURI, useURI)
15import Text.URI (URI, mkURI, relativeTo) 10import Text.URI (URI)
16 11
17data W3CTestOption = W3CTestOption 12data W3CTestOption = W3CTestOption
18 { w3cTestOptionSpecVersion :: Maybe Text 13 { w3cTestOptionSpecVersion :: Maybe Text
19 , w3cTestOptionProcessingMode :: Maybe Text 14 , w3cTestOptionProcessingMode :: Maybe Text
20 , w3cTestOptionBase :: Maybe Text 15 , w3cTestOptionBase :: Maybe Text
21 , w3cTestOptionExpandContext :: Maybe Text 16 , w3cTestOptionExpandContext :: Maybe Text
17 , w3cTestOptionCompactArrays :: Maybe Bool
22 } 18 }
23 deriving (Show) 19 deriving (Show)
24 20
@@ -29,6 +25,7 @@ instance FromJSON W3CTestOption where
29 <*> (v .:? "processingMode") 25 <*> (v .:? "processingMode")
30 <*> (v .:? "base") 26 <*> (v .:? "base")
31 <*> (v .:? "expandContext") 27 <*> (v .:? "expandContext")
28 <*> (v .:? "compactArrays")
32 parseJSON invalid = prependFailure "parsing W3CTestOption failed, " (typeMismatch "Object" invalid) 29 parseJSON invalid = prependFailure "parsing W3CTestOption failed, " (typeMismatch "Object" invalid)
33 30
34data W3CTest = W3CTest 31data W3CTest = W3CTest
@@ -72,25 +69,3 @@ fetchTest url = do
72 runReq defaultHttpConfig do 69 runReq defaultHttpConfig do
73 res <- req GET reqUrl NoReqBody jsonResponse (reqOptions <> header "Accept" mimeType) 70 res <- req GET reqUrl NoReqBody jsonResponse (reqOptions <> header "Accept" mimeType)
74 pure <| responseBody res 71 pure <| responseBody res
75
76parseExpansionOptions :: URI -> URI -> Maybe W3CTestOption -> IO (URI, JLDExpansionParams () IO -> JLDExpansionParams Text IO)
77parseExpansionOptions baseUrl inputUrl maybeOptions = do
78 expandContext <- case maybeOptions >>= w3cTestOptionExpandContext of
79 Just rawUrl -> do
80 url <- fromJust <. (`relativeTo` baseUrl) <$> mkURI rawUrl
81 Just <$> fetchTest url
82 Nothing -> pure Nothing
83
84 let params p =
85 p
86 { jldExpansionParamsDocumentLoader = documentLoader
87 , jldExpansionParamsProcessingMode = case maybeOptions >>= w3cTestOptionProcessingMode of
88 Just "json-ld-1.0" -> JLD1_0
89 Just "json-ld-1.1" -> JLD1_1
90 _ -> jldExpansionParamsProcessingMode p
91 , jldExpansionParamsExpandContext = expandContext <|> jldExpansionParamsExpandContext p
92 }
93
94 pure (expandBaseUrl, params)
95 where
96 expandBaseUrl = fromMaybe inputUrl (parseUri =<< w3cTestOptionBase =<< maybeOptions)