# -*- coding: utf-8 -*- """novelWriter ToHtml Class Tester """ import pytest from nw.core import NWProject, NWIndex, ToHtml @pytest.mark.core def testCoreToHtml_Format(dummyGUI): """Test all the formatters for the ToHtml class. """ theProject = NWProject(dummyGUI) dummyGUI.theIndex = NWIndex(theProject, dummyGUI) theHtml = ToHtml(theProject, dummyGUI) # Export Mode # =========== assert theHtml._formatSynopsis("synopsis text") == ( "
Synopsis: synopsis text
\n" ) assert theHtml._formatComments("comment text") == ( "Comment: comment text
\n" ) assert theHtml._formatKeywords("") == "" assert theHtml._formatKeywords("tag: Jane") == ( "" ) assert theHtml._formatKeywords("char: Bod, Jane") == ( "" ) # Preview Mode # ============ theHtml.setPreview(True, True) assert theHtml._formatSynopsis("synopsis text") == ( "Synopsis: synopsis text
\n" ) assert theHtml._formatComments("comment text") == ( "comment text
\n" ) assert theHtml._formatKeywords("") == "" assert theHtml._formatKeywords("tag: Jane") == ( "" ) assert theHtml._formatKeywords("char: Bod, Jane") == ( "" ) # END Test testCoreToHtml_Format @pytest.mark.core def testCoreToHtml_Convert(dummyGUI): """Test the converter of the ToHtml class. """ theProject = NWProject(dummyGUI) dummyGUI.theIndex = NWIndex(theProject, dummyGUI) theHtml = ToHtml(theProject, dummyGUI) # Export Mode # =========== theHtml.isNovel = True # Header 1 theHtml.theText = "# Title\n" theHtml.tokenizeText() theHtml.doConvert() assert theHtml.theResult == "Some nested bold and italic and "
"strikethrough text here
Line one
Line two
Line three
Synopsis: The synopsis ...
\n" ) # Comment theHtml.theText = "% A comment ...\n" theHtml.tokenizeText() theHtml.doConvert() assert theHtml.theResult == "" theHtml.setComments(True) theHtml.theText = "% A comment ...\n" theHtml.tokenizeText() theHtml.doConvert() assert theHtml.theResult == ( "Comment: A comment ...
\n" ) # Keywords theHtml.theText = "@char: Bod, Jane\n" theHtml.tokenizeText() theHtml.doConvert() assert theHtml.theResult == "" theHtml.setKeywords(True) theHtml.theText = "@char: Bod, Jane\n" theHtml.tokenizeText() theHtml.doConvert() assert theHtml.theResult == ( "" ) # Direct Tests # ============ theHtml.isNovel = True # Title theHtml.theTokens = [ (theHtml.T_TITLE, 1, "A Title", None, theHtml.A_PBB_NO | theHtml.A_CENTRE), (theHtml.T_EMPTY, 1, "", None, theHtml.A_NONE), ] theHtml.doConvert() assert theHtml.theResult == ( "* * *
\n" # Skip theHtml.theTokens = [ (theHtml.T_SKIP, 1, "", None, theHtml.A_NONE), (theHtml.T_EMPTY, 1, "", None, theHtml.A_NONE), ] theHtml.doConvert() assert theHtml.theResult == "\n" # Styles # ====== theHtml.setLinkHeaders(False) # Align Left theHtml.setStyles(False) theHtml.theTokens = [ (theHtml.T_HEAD1, 1, "A Title", None, theHtml.A_LEFT), ] theHtml.doConvert() assert theHtml.theResult == ( "
Some nested bold and italic and " "strikethrough " "text here
\n" ) # END Test testCoreToHtml_Convert @pytest.mark.core def testCoreToHtml_Methods(dummyGUI): """Test all the other methods of the ToHtml class. """ theProject = NWProject(dummyGUI) theHtml = ToHtml(theProject, dummyGUI) # Auto-Replace docText = "Text withText with <brackets> & short–dash, long—dash …
\n" ) # Revert on MD assert theHtml.theMarkdown == ( "Text with <brackets> & short–dash, long—dash …\n\n" ) theHtml.doPostProcessing() assert theHtml.theMarkdown == docText + "\n" # With Preview, No Revert theHtml.setPreview(True, True) theHtml.theText = docText theHtml.doAutoReplace() theHtml.tokenizeText() theHtml.doConvert() assert theHtml.theMarkdown == ( "Text with <brackets> & short–dash, long—dash …\n\n" ) theHtml.doPostProcessing() assert theHtml.theMarkdown == ( "Text with <brackets> & short–dash, long—dash …\n\n" ) # CSS # === assert len(theHtml.getStyleSheet()) > 1 assert "p {text-align: left;}" in theHtml.getStyleSheet() assert "p {text-align: justify;}" not in theHtml.getStyleSheet() theHtml.setJustify(True) assert "p {text-align: left;}" not in theHtml.getStyleSheet() assert "p {text-align: justify;}" in theHtml.getStyleSheet() theHtml.setStyles(False) assert theHtml.getStyleSheet() == [] # END Test testCoreToHtml_Methods