summaryrefslogtreecommitdiff
path: root/source/Test/Unit/Html.hs
diff options
context:
space:
mode:
Diffstat (limited to 'source/Test/Unit/Html.hs')
-rw-r--r--source/Test/Unit/Html.hs47
1 files changed, 43 insertions, 4 deletions
diff --git a/source/Test/Unit/Html.hs b/source/Test/Unit/Html.hs
index 7dd2837..14ecdc3 100644
--- a/source/Test/Unit/Html.hs
+++ b/source/Test/Unit/Html.hs
@@ -4,6 +4,7 @@ module Test.Unit.Html (unitTests) where
import Base
import Api qualified
+import Felix.Parse qualified as Parse
import Felix.Source
import Felix.Source.Graph
import Render.Html qualified as Html
@@ -13,20 +14,55 @@ import Report.Location (Location, pattern Nowhere)
import Syntax.Abstract
import Data.Text qualified as Text
+import Data.Text.IO qualified as TextIO
+import Data.List.NonEmpty qualified as NonEmpty
import System.Directory qualified as Directory
import Test.Tasty
import Test.Tasty.HUnit
unitTests :: TestTree
unitTests = testGroup "HTML renderer"
- [ testCase "reference previews are rendered for local and imported refs" referencePreviews
+ [ testCase "one shared index resolves local and cross-page previews" referencePreviews
, testCase "missing reference preview data falls back to readable text" missingReferenceFallback
, testCase "datatype rendering omits unchecked derived facts" datatypeDerivedFactsAreOmitted
]
referencePreviews :: Assertion
referencePreviews = do
- html <- Api.exportHtml "test/html-fixtures/root-preview.tex"
+ graph <-
+ expectRight =<<
+ Api.prepareDefaultSourceGraph
+ "test/html-fixtures/root-preview.tex"
+ workspace <-
+ expectRight =<< Parse.parseResolvedSourceGraph graph
+ hints <- TextIO.readFile "library/lexicon.tsv"
+ layout <-
+ expectRight
+ (layoutHtmlSourceGraph
+ Api.defaultHtmlMountPrefixes
+ graph)
+ let nodes = Parse.parsedWorkspaceImportedBeforeImporter workspace
+ sourceBlocks =
+ (\node ->
+ ( Parse.parsedModuleResolved node
+ , Parse.parsedModuleBlocks node
+ ))
+ <$> nodes
+ (renderIndex, pages) =
+ Html.buildRenderIndex sourceBlocks
+ rootPage = NonEmpty.last pages
+ context <-
+ expectRight
+ (htmlRenderContext
+ layout
+ (Html.htmlPagePresentationSource rootPage))
+ html <-
+ expectRight
+ (Html.renderDocument
+ context
+ hints
+ renderIndex
+ rootPage)
let supportScript = Html.supportScriptAssetContents
assertContains "local references keep page anchors" "href=\"#local_prop\"" html
assertContains "local references point previews at the visible target block" "data-reference-label=\"local_prop\" data-preview-target-id=\"local_prop\"" html
@@ -111,12 +147,15 @@ renderSynthetic blocks = do
(htmlRenderContext
layout
(sourceGraphRootSource graph))
+ let (renderIndex, page :| _remainingPages) =
+ Html.buildRenderIndex
+ ((sourceGraphRootSource graph, blocks) :| [])
expectRight
(Html.renderDocument
context
""
- blocks
- [(sourceGraphRootSource graph, blocks)])
+ renderIndex
+ page)
expectRight :: (Show e, HasCallStack) => Either e a -> IO a
expectRight = \case